C++中的typeid
是一个运算符,用于获取一个表达式的类型信息。它的作用是返回一个std::type_info
对象,该对象包含了表达式的类型信息,包括类型的名称。
typeid
通常与dynamic_cast
和std::type_info
一起使用,用于在运行时识别对象的实际类型,从而实现多态性。
下面是typeid
的使用示例:
#include<iostream>
#include<typeinfo>
classBase{
virtualvoidfoo(){}
};
classDerived:publicBase{};
intmain(){
Base*basePtr=newDerived();
//使用typeid获取basePtr所指对象的类型信息
conststd::type_info&type=typeid(*basePtr);
//打印类型的名称
std::cout<<"Objecttype:"<<type.name()<<std::endl;
//使用typeid进行类型判断
if(type==typeid(Base)){
std::cout<<"ObjectisoftypeBase"<<std::endl;
}
elseif(type==typeid(Derived)){
std::cout<<"ObjectisoftypeDerived"<<std::endl;
}
deletebasePtr;
return0;
}
输出结果:
Objecttype:classDerived
ObjectisoftypeDerived
在上面的示例中,typeid(*basePtr)
返回的type_info
对象的名称为"classDerived",表示basePtr
所指的对象的实际类型是Derived
。