C++删除继承的类

Pij*_*usn 5 c++ inheritance destructor

假设有一个类Object,然后是另一个继承Object的Cat.接下来,有一个Object*(指针)列表.然后,我创建一个新的Cat并将其放入列表中.一段时间后,我想删除所有Cats并在列表的每个成员上调用delete.它叫Cat的析构函数吗?

Red*_*edX 19

如果您将对象的析构函数标记为虚拟,则为是.

class Object {
  public:
  virtual ~Object(){} //make the base class destructor virtual
};

class cat : public Object {
  public:
  virtual ~cat(){} // now this gets called when a pointer to Object that is a cat is destroyed
}
Run Code Online (Sandbox Code Playgroud)

  • `Object` -detructor必须是公共的.此外,`cat`-destructor不必显式声明为虚拟. (3认同)

APr*_*mer 7

如果Object的析构函数是虚拟的,是的.