多态类型:有虚函数的类。
非多态类型:没有虚函数的类。
基类指针可以指向派生类对象,但是如果要调用派生类新增的成员,则就要用类型转换了,但是类型兼容有时必须在运行时才能确定,确定了才能进行类型转换,那这时就要用的运行时的类型识别了。
一:dynamic_cast强制类型转换
dynamic_cast 用于将基类指针或引用转换成派生类的指针或引用,基类必须是多态类型的,过程是先判断是否兼容,如果兼容则转换,如果不兼容,生成空指针,或者报错。
二:typeid获取类型信息
格式:typeid(表达式)
typeid(类型名)
typeid返回一个type_info类型的常引用。
type_info是typeinfo头文件的一个类,有一个name()函数用来显示类型信息。
typeid获取的是具体的类型信息。
以上就是我对于运行时类型识别的认识。