我在网上看到的采访说是dynamic_cast的实现,和RTTI有关。我这才意识到我对这个概念是如此的模糊,所以我做了这个总结。
它提供了一种在运行时确定对象类型的方法。运行时类型信息使程序能够使用基类的指针或引用来检查这些指针或引用所指向的对象的实际派生类型。
RTTI提供了以下两个非常有用的运算符:
C++中有了虚函数,就有了多态性。对于多态对象,程序编译时可能无法确定对象的类型。当类包含虚函数时,其基类指针可以指向任何派生类对象。这时,可能不知道基类指针指向哪个对象。必须使用运行时类型在运行时确定类型。标志制作。
typeid 关键字 、
类类型信息
{
私人:
类型信息(常量类型信息&);
//type_info类的复制构造函数和赋值运算符是私有的。
type_info& 运算符=(const type_info&);
大众:
virtual ~type_info();//析构函数//type_info类中重载了==运算符,可以比较两个对象的类型是否相等。
布尔运算符==(const type_info&)const;
//重载!=运算符来比较两个对象的类型是否不相等
布尔运算符!=(const type_info&)const;
//比较常用的成员函数名,这个函数返回的是对象的类型名。
//前面使用的typeid(a).name()调用这个成员函数
const char* name()const;
bool before(const type_info&);
};
由于type_info的构造函数和赋值运算符是私有的,因此用户不允许自己创建type_info的对象。使用 type_info 的唯一方法是使用 typeid 关键字。
dynamic_cast 运算符
RTTI意识到