C++之RTTI

RTTI:运行时类型识别
typeid(*obj).name()打印出obj这个指针指向的实际的对象类型
对类型进行比对:if{typeid(*obj)==typeid(Bird)}
dynamic_cast<  >转换类型,< >中是要转化成为的类型,例如:Bird *bird = dynamic_cast<Bird *>(obj);(obj)转化为Bird * 类型
dynamic_cast用法的注意事项:只能应用于指针和引用之间的转换,即< >中只能是某一类型的指针或者是某一类型的引用;要转换的类型中,必须包含虚函数;转换成功返回子类的地址,失败返回NULL
typied的注意事项:type_id 返回一个type_info对象的引用;如果想通过基类的指针获得派生类的数据类型,基类必须带有虚函数;只能获取对象的实际类型

 

 

无欲则刚 关心则乱
原文地址:https://www.cnblogs.com/xjyxp/p/11245797.html