像C vs C类似的强制转换?

可能重复:
定期投射vs. static_cast vs. dynamic_cast

自从我编程以来,我一直在使用类C的演员阵容:

class* initializedClassInstance;
void* test = (void*) initializedClassInstance;

而且我被告知某处我应该习惯C ++类型转换(static_cast,dynamic_cast ...)。

是否有理由相对于其他(C ++ over C风格)? 静态演员和动态演员之间有区别,对吧? 但是它是什么?

谢谢!


C风格的演员阵容是不安全的。

C ++风格的转换以另一种方式表现。 static_cast不能进行转换, static_cast会给你一个编译错误。 如果您投射指针,则失败时的dynamic_cast将转换为NULL,否则将引发异常。

所以这可以让你写一个更安全的代码。


就在这里。 它给你检查。 static_cast为您提供编译时检查, dynamic_cast为您提供运行时检查。

你可以在这里阅读更多关于casts

链接地址: http://www.djcxy.com/p/28443.html

上一篇: C++ like vs C like casts?

下一篇: C++ type casting