引言假设有基类 A,包含了虚函数 func1,以及有派生类 B,继承于类 A,派生类 B 中实现了函数 func1。而将 A 类型的指针强制转换为 B 类型的指针时,如果 A 类型指针指向的对象确实为 B 类型的对象,那么转换也是安全的。此时,该 B 类型对象被称为完整对象。C++ 包含了以下几种强制转换运算符,这些运算符用于消除老式 C 语言转换中的存在的歧义和隐患:。区分几种强制转换的使用场景dynamic_cast 主要用于多态类型的强制转换,而 static_cast 主要用于非多态类型的强制转换。因为 static_cast 没有运行时检测。尽管 dynamic_cast 更加安全,但 dynamic_cast 仅适用于指针和引用,并且运行时检测是需要消耗性能的。结果就是,static_cast 转换会继续执行,但其返回结果是未定义的。这就需要调用者去进一步验证转换结果是有效的。

C++基础入门篇之强制转换

C++基础入门篇之强制转换

C++基础入门篇之强制转换

C++基础入门篇之强制转换

C++基础入门篇之强制转换