C++03: 类型转换

一.简介

二.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

原文地址:https://www.cnblogs.com/k5bg/p/11457421.html