这个问题已经在这里有了答案:




已关闭10年。






您好,
很抱歉,如果重复的话,但是我在这里找不到我的问题的答案。
假设我们在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)是否返回非null来完成此操作,其中ptrCPolygon的指针。但是,这需要基类(CPolygon)具有至少一个您可能仍然需要的虚拟成员函数(至少一个虚拟析构函数)。

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

10-11 15:47