一.简介
二.static_cast<>
三.dynamic_cast<>
dynamic_cast 具有类型检查的功能,比 static_cast 更安全
dynamic_cast 将指向基类(父类)的指针或者引用转换成指向这个基类派生类(子类)的指针或者引用,转换成功将会得到派生类的指针或者引用,如果失败将会返回一个null
dynamic_cast 运算符是将一个指向基类的指针转换成指向派生类的指针,如果失败,返回空指针,在类层次之中向上转换
dynamic_cast 是将一个基类对象指针(或引用)转换到继承类指针,dynamic_cast 会根据基类指针是否真正指向继承类指针来做相应的处理,父类一定要有虚函数
注意:子类指针无法指向父类,子类指针也无法转化为父类指针
父类指针可以指向子类,父类指针也可以转化为子类指针
/** 子类转父类 */ F* f = new F(); Z* z = dynamic_cast<Z*> (f); //出错,子类无法转父类 /** 父类转子类 */ Z* z = new Z(); F* f = dynamic_cast<F*>(z); //成功,父类可以转子类
四.RTTI(Run Time Type info)
RTTI存储类的相关信息,用于在运行时识别类对象的信息
C++里面提供一个关键字 typeid 一个数据类型 typeinfo 对应的头文件 typeinfo.h