C++运行时类型识别(RTTI)
运行时类型识别RTTI(即Run-Time Type Identification).
主要通过typeid和dynamic_cast来实现
typeid操作符
- type_id返回一个type_info对象的引用
- 如果想通过基类的指针获得派生类的数据类型,基类必须带有虚函数
- 只能够获取对象的实际类型
type_info实现如下:
class type_info
{
public:
const char* name() const;//typeid调用此成员
bool operator ==(const type_info& rhs) const;//对“==”运算符进行重载
.......
}
应用如下:
typeid(* obj).name(); //打印出指针obj指向的实际的对象类型
if(typeid(* obj)==typeid(Bird))