像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
上一篇: C++ like vs C like casts?
下一篇: C++ type casting