哪种铸造技术更适合在C++中从上层铸造到下层铸造

Nar*_*uto 2 c++ polymorphism casting

我想从上层指针转换为低级类,即从基类指针转换为派生类指针.

我应该使用"Dynamic_cast"还是"reinterpret_cast"?请指教

sha*_*oth 11

不要使用reinterpret_cast- 使用static_castdynamic_cast.如果你确定指针完全是派生类对象的使用static_cast,否则使用dynamic_cast(这将要求基类是多态的)并检查结果以确保指针确实是你想要的类.

  • `dynamic_cast`用于当你不知道你的`Base*`指向的东西是否真的是'Derived`对象时,你想找出(如果是这样的话,得到一个`Derived*`指针).这很少需要.`reinterpret_cast`永远不应该用于相关指针类型之间的转换.在某些情况下(例如多重继承),它会给出"错误"的答案,例如,如果你将它作为"派生的*"使用它会给你一个`Derived*`指针. (2认同)

ere*_*eOn 7

这取决于你对指针的了解.

如果您确定您拥有的指针是子类型,那么您可以static_cast<>安全地使用它.

如果你不确定,那就去,dynamic_cast<>但这有成本,而且速度较慢.