使用dynamic_cast一个继承层次内进行转化的指针/引用。使用static_cast普通类型转换。使用reinterpret_cast的...
dynamic_cast 但是有一些限制。如果继承层次结构中有多个相同类型的对象(所谓的“可怕的菱形”)并且您没有使用 virtual 继承,则它不起作用。它也只能通过公共继承 - 它总是无法通过 protected 或private 继承。然而,这很少成为问题,因为这种继承形式很少见。 reinterpret_cast 是最危险的演员,应该非常谨慎地使用。它将...
dynamic_pointer_cast用于转换std::shared_ptr类型,例如从基类上的指针转换为派生类上的指针:...
dynamic_cast允许转换到同级,例如:
什么时候应该使用 static_cast、dynamic_cast、const_cast 和 reinterpret_cast? dynamic_cast 是如何实现的 在C++ 中使用“static_cast”进行向下转换 在Ubuntu 18.04 amd64、GCC 7.4.0 上测试。 T Timmy_A 虽然其他答案很好地描述了 C++ 强制转换之间的所有差异,但我想添加一个简短说明,为什么您不应该使用 C ...