转换

C++ 语言提供时,如果类从包含虚函数的基类派生,对类型可用于调用位于派生类对象的虚函数实现的该基类的指针。 包含虚函数的类有时称为 “多态类”。

因为派生类完全包含它派生自基类的所有定义,转换类层次结构的指针到任何这些基类是安全的。 将指针基类,将在层次结构指针下可能是安全的。 一个,如果此点的对象对实际上是从基类,派生类型是安全的。 在这种情况下,实际对象被视为 “整个对象”。指向基类的指针添加指向 “subobject”完全对象。 例如,请考虑在下图中显示的类层次结构。

类层次结构

类层次结构图

如下图所示,类型 C 对象可直观。

与 B Subobject 和 Subobject 的类 C

具有 B 子对象和 A 子对象的 C 类

将类 C实例,因此具有 B subobject 和 A subobject。 C实例,包括 A 和 B 子对象,即 “整个对象”。

使用运行时类型信息,检查是可能的指针是否指向实际完整对象,并可以安全地转换指向在其层次结构中的其他对象。 dynamic_cast 运算符可用于进行这些类型转换。 它还执行必要运行时进行检查操作安全性。

对于 nonpolymorphic 类型转换,可以使用 static_cast 运算符 (本主题说明静态和动态强制转换之间的差异,因此,使用时,每个) 时正确。

此节涵盖以下主题:

请参见

参考

表达式(C++)