📅  最后修改于: 2023-12-03 15:29:51.633000             🧑  作者: Mango
在C++中,可以使用typeid
操作符获取一个表达式的类型信息。而使用typeid
操作符的type_info
类型的成员函数name()
可以返回类型的名称字符串。
以下是typeid
的使用示例:
#include <iostream>
#include <typeinfo>
int main() {
int a = 10;
std::cout << typeid(a).name() << std::endl; // 输出 "int"
return 0;
}
在上述示例中,我们使用typeid
操作符获取了变量a
的类型信息,并使用type_info
类型的成员函数name()
获取其名称字符串。
需要注意的是,typeid
操作符返回的类型信息是在编译期间确定的,而不是运行期间。因此,如果使用typeid
操作符获取一个对象的类型信息,则该对象的类型必须是完整的、已定义的类型。
以下是一个更为复杂的示例,展示了typeid
操作符在多态中的使用:
#include <iostream>
#include <typeinfo>
class Base {
public:
virtual void print() {
std::cout << "This is Base" << std::endl;
}
};
class Derived : public Base {
public:
virtual void print() {
std::cout << "This is Derived" << std::endl;
}
};
int main() {
Base* b_ptr = new Derived();
std::cout << typeid(*b_ptr).name() << std::endl; // 输出 "class Derived"
return 0;
}
在上述示例中,我们定义了一个基类Base
和一个派生类Derived
。我们首先使用基类指针指向派生类对象,并使用typeid
操作符获取了该对象的实际类型信息。需要注意的是,此时需要在该对象名字前加上*
,表示获取指针所指向对象的类型信息。
至此,我们已经介绍了在C++中使用typeid
操作符获取类型名称的方法。该方法在C++语言中的多态等方面有广泛的应用。