C++中的typeid
是一個運算符,用于獲取一個表達式的類型信息。它的作用是返回一個std::type_info
對象,該對象包含了表達式的類型信息,包括類型的名稱。
typeid
通常與dynamic_cast
和std::type_info
一起使用,用于在運行時識別對象的實際類型,從而實現多態性。
下面是typeid
的使用示例:
#include <iostream>
#include <typeinfo>
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
。