当所有析构函数都是默认值时,是否需要基类中的虚析构函数

时间:2018-04-18 14:54:17

标签: c++ raii

我理解我们应该在基类中使用虚拟析构函数来确保正确的资源处理,因为它可以保证在销毁对象时会监视继承链并调用所有父析构函数。话虽这么说,当基类和任何子类都只使用默认的析构函数时,我们还需要基类中的虚拟析构函数吗?例如:

class Printable {
  virtual std::string print();
};

class A : public Printable {
  int foo;
  bool bar;
  std::string print() override;
}

class B : public Printable {
  std::vector<int> foo;
  std::string print() override;
}

没有管理资源,并且所有析构函数都是隐式默认的。是否仍然建议在Printable

中指定虚拟析构函数

0 个答案:

没有答案