-2

可能重复:
常规演员表与 static_cast 与 dynamic_cast

自从我开始编程以来,我一直在使用类似 C 的演员表:

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

我在某处被告知我应该习惯 C++ 强制转换(static_cast、dynamic_cast...)。

是否有理由更喜欢其中一个(C++ 而不是 C 风格)?静态演员表和动态演员表是有区别的,对吧?但它是什么?

谢谢!

4

2 回答 2

4

C 风格的强制转换是不安全的。

C++ 风格的强制转换以另一种方式表现。static_cast如果它不能进行强制转换,会给你一个编译错误。 dynamic_cast如果你正在转换指针,on fail 将转换为 NULL,否则抛出异常。

因此,这使您可以编写更安全的代码。

于 2012-08-06T08:51:17.587 回答
1

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

你可以在这里阅读更多casts

于 2012-08-06T08:48:52.127 回答