我读到不能共享析构函数,这是真的吗?

我有一个带有几个子类的基类和的析构函数
这些子类不会改变。这将导致某些重复
码。

是否可以共享析构函数?如果不是,我将如何避免这些析构函数中的重复代码?

Class A{

public:
  ~A() {
    //do something
  }
};

class B: public A{
};
class C: public A{
};
class D: public A{
};


现在,我希望BCD具有与A相同的析构函数。

最佳答案

每个类的析构函数都会自动为所有子对象(包括基类子对象)调用析构函数。因此,您可以通过将析构函数放在基础或成员析构函数中来共享其行为。当然,派生类仍然具有自己的析构函数,但是在大多数情况下,编译器生成的析构函数(除了对子对象析构函数的强制调用之外,什么也不做)。

关于c++ - 在通用层次结构中的类之间共享析构函数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16425512/

10-16 02:27