21xrx.com
2024-11-24 15:11:42 Sunday
登录
文章检索 我的文章 写文章
C++ typeid的用法及示例
2023-10-11 22:21:17 深夜i     --     --
C++ typeid 用法 示例 类型检查

C++编程语言中的typeid是一个非常有用的操作符,它用于获取一个变量的运行时类型信息。它的使用可以帮助开发人员在程序运行时获取对象的实际类型,从而可以进行相应的类型检查或类型转换。

使用typeid操作符非常简单。要使用它,只需在变量或表达式前面加上typeid,并将其作为一个操作数。该操作符将返回一个type_info类型的对象,该对象包含有关变量或表达式的类型信息。

下面是一个使用typeid的示例:


#include <iostream>

#include <typeinfo>

class Shape {

public:

  virtual void draw()

    std::cout << "Drawing a shape." << std::endl;

  

};

class Circle : public Shape {

public:

  void draw() override

    std::cout << "Drawing a circle." << std::endl;

  

};

class Rectangle : public Shape {

public:

  void draw() override

    std::cout << "Drawing a rectangle." << std::endl;

  

};

int main() {

  Shape* shape = new Circle();

  

  if (typeid(*shape) == typeid(Circle))

    std::cout << "The shape is a circle." << std::endl;

   else if (typeid(*shape) == typeid(Rectangle))

    std::cout << "The shape is a rectangle." << std::endl;

   else

    std::cout << "The shape is not recognized." << std::endl;

  

  

  delete shape;

  

  return 0;

}

在上面的示例中,我们定义了一个Shape基类和两个派生类Circle和Rectangle。在main函数中,我们创建了一个指向Shape对象的指针,但该对象的实际类型是Circle。然后,我们使用typeid操作符将该对象的类型与Circle和Rectangle进行比较,并根据结果输出相应的信息。

在运行这段代码时,我们可以看到输出了"The shape is a circle."。这是因为我们使用typeid将指向Shape对象的指针解引用为Circle对象,并与Circle类型进行比较。

总之,typeid操作符是一个强大的工具,可用于在C++程序中获取对象的运行时类型信息。它可以帮助开发人员进行类型检查或类型转换,以实现更加灵活和健壮的代码。有了typeid,我们可以更好地理解和利用C++的面向对象特性。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复