C++中的typeid
是一个运算符,用于获取一个表达式的类型信息。它的作用是返回一个std::type_info
对象,该对象包含了表达式的类型信息,包括类型的名称。
typeid
通常与dynamic_cast
和std::type_info
一起使用,用于在运行时识别对象的实际类型,从而实现多态性。
下面是typeid
的使用示例:
#include#include class Base { virtual void foo() {} }; class Derived : public Base {}; int main() { Base* basePtr = new Derived(); // 使用typeid获取basePtr所指对象的类型信息 const std::type_info& type = typeid(*basePtr); // 打印类型的名称 std::cout << "Object type: " << type.name() << std::endl; // 使用typeid进行类型判断 if (type == typeid(Base)) { std::cout << "Object is of type Base" << std::endl; } else if (type == typeid(Derived)) { std::cout << "Object is of type Derived" << std::endl; } delete basePtr; return 0; }
输出结果:
Object type: class Derived Object is of type Derived
在上面的示例中,typeid(*basePtr)
返回的type_info
对象的名称为"class Derived",表示basePtr
所指的对象的实际类型是Derived
。