C++的“强制类型转换”和“类型构造”之间有什么关系?

“强制类型转换”和“类型构造”分别是指什么?两者有何关系与区别?... “强制类型转换”和“类型构造”分别是指什么?两者有何关系与区别? 展开
 我来答
FrankHB1989
2011-03-20 · TA获得超过4.2万个赞
知道大有可为答主
回答量:4569
采纳率:100%
帮助的人:3162万
展开全部
“强制类型转换”……是说显式类型转换吧……
形式上包括C风格转换、static_cast、reinterpret_cast、const_cast和dynamic_cast。C风格转换形如(T)e,把表达式e转换为T类型,语义上可以是static_cast、const_cast、reinterpret或是它们的组合。static_cast是编译期的类型转换,用于有整数/浮点数之间的转换以及有继承关系的类的转换;reinterpret_cast比较暴力,static_cast转换不了的指针和整数之类的转换都可以进行,当然sizeof不等的类型没办法转换(比C语言的C风格转换更直接,不会进行内存布局对齐),因此也比较不安全;dynamic_cast是运行期查询多态类(具有虚函数/虚继承)的继承关系的转换,如果失败,对于指针结果为零,对于引用抛出std::bad_cast异常。
类的单个参数自定义的构造函数可以用于代替其中的static_cast但不能代替其它类型转换。
例如
class A
{
public;
A(int);
};
那么表达式A(1)和static_cast<A>(1)、(A)1都调用构造函数A(1)生成临时变量。

参考资料: 原创

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式