📅  最后修改于: 2023-12-03 15:41:27.970000             🧑  作者: Mango
在 C++ 中,我们可以使用 typeid
运算符来获取一个对象的类型。
typeid (object)
其中,object
可以是一个具体的对象或者是一个对象的引用或指针。
typeid
运算符返回一个 type_info
对象,表示该对象的类型。type_info
对象可以使用以下成员函数获得类型信息:
name()
返回一个字符串,表示该类型的名称。operator==
比较两个 type_info
对象是否相等。operator!=
比较两个 type_info
对象是否不相等。#include <iostream>
#include <typeinfo>
class Base {
virtual void func() {}
};
class Derived : public Base {
};
int main() {
Base b;
Derived d;
std::cout << typeid(b).name() << std::endl; // "class Base"
std::cout << typeid(d).name() << std::endl; // "class Derived"
std::cout << (typeid(b) == typeid(d)) << std::endl; // false
std::cout << (typeid(b) != typeid(d)) << std::endl; // true
Base* p = &d;
std::cout << typeid(*p).name() << std::endl; // "class Derived"
}
在上述示例中,我们定义了一个 Base
类和一个继承自 Base
的 Derived
类。然后我们定义了一个 Base
对象 b
和一个 Derived
对象 d
,并通过 typeid
运算符获取它们的类型信息。我们还定义了一个指向 Derived
对象的 Base
指针 p
,并通过 typeid
运算符获取它所指对象的类型信息。
通过上述示例,我们可以看到,typeid
运算符可以帮助我们很方便地获取一个对象的类型信息,从而进行针对性的处理。