自从我开始编程以来,我一直在使用类似 C 的演员表:
class* initializedClassInstance;
void* test = (void*) initializedClassInstance;
我在某处被告知我应该习惯 C++ 强制转换(static_cast、dynamic_cast...)。
是否有理由更喜欢其中一个(C++ 而不是 C 风格)?静态演员表和动态演员表是有区别的,对吧?但它是什么?
谢谢!
自从我开始编程以来,我一直在使用类似 C 的演员表:
class* initializedClassInstance;
void* test = (void*) initializedClassInstance;
我在某处被告知我应该习惯 C++ 强制转换(static_cast、dynamic_cast...)。
是否有理由更喜欢其中一个(C++ 而不是 C 风格)?静态演员表和动态演员表是有区别的,对吧?但它是什么?
谢谢!
C 风格的强制转换是不安全的。
C++ 风格的强制转换以另一种方式表现。static_cast
如果它不能进行强制转换,会给你一个编译错误。
dynamic_cast
如果你正在转换指针,on fail 将转换为 NULL,否则抛出异常。
因此,这使您可以编写更安全的代码。
就在这里。它给你支票。static_cast
例如,为您提供编译时检查并dynamic_cast
为您提供运行时检查。
你可以在这里阅读更多casts