C++ 多态性 : Checking data type of sub class

标签 c++ object polymorphism

Possible Duplicate:
Finding the type of an object in C++

你好,
如果它是重复的,我很抱歉,但我无法在这里找到我的问题的答案。
假设我们在 c++ 中有以下类结构:

class CPolygon {
  protected:
    int width, height;
  public:
    void set_values (int a, int b)
      { width=a; height=b; }
  };

class CRectangle: public CPolygon {
  public:
    int area ()
      { return (width * height); }
  };

现在我有一个指向 CPolygon 对象的指针。如何检查它是否实际上是指向 CRectangle 类对象的指针?

最佳答案

您可以通过检查 dynamic_cast<CRectangle*>(ptr) 来做到这一点。返回非空值,其中 ptr是指向 CPolygon 的指针.但是,这要求基类(CPolygon)至少有一个您可能需要的虚成员函数(至少是一个虚析构函数)。

关于C++ 多态性 : Checking data type of sub class,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4107145/

相关文章:

c++ - 如何在不使用 std 库的情况下将数组值分配给构造函数中的类成员数组?

javascript - 如何解析在 JSON 中作为字符串发送的 POINT 对象?

C# 如何访问已实现的接口(interface)中不存在的对象属性

oop - 使用多态性进行表达式评估和树遍历? (阿拉史蒂夫耶格)

C++:std::map、查找循环、算法

c++ - 为什么当我(不小心)使用 bool 类型时 Visual C++ 2008 不报错

c++ - 将对象数组转换为指向唯一对象的指针数组

java - 查找对象引用

Javascript - 这些功能是否在做同样的事情?

java - 如何用其他内容替换此 "if"语句?