📜  获取对象的类型 c++ (1)

📅  最后修改于: 2023-12-03 15:41:27.970000             🧑  作者: Mango

获取对象的类型 C++

在 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 类和一个继承自 BaseDerived 类。然后我们定义了一个 Base 对象 b 和一个 Derived 对象 d,并通过 typeid 运算符获取它们的类型信息。我们还定义了一个指向 Derived 对象的 Base 指针 p,并通过 typeid 运算符获取它所指对象的类型信息。

通过上述示例,我们可以看到,typeid 运算符可以帮助我们很方便地获取一个对象的类型信息,从而进行针对性的处理。