0

デストラクタは共有できないと読みましたが、これは本当ですか?

いくつかのサブクラスを持つ基本クラスがあり、それらのサブクラスのデストラクタは変更されません。これにより、コードが重複する場合があります。

デストラクタを共有することは可能ですか? そうでない場合、これらのデストラクタで重複したコードを回避するにはどうすればよいですか?

Class A{

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

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

今、私はBC、および とD同じデストラクタを持ちたいと思っていAます。

4

3 に答える 3

2

すべてのクラスのデストラクタは、基本クラスのサブオブジェクトを含むすべてのサブオブジェクトのデストラクタを自動的に呼び出します。したがって、デストラクタをベース デストラクタまたはメンバー デストラクタに配置することで、デストラクタの動作を共有できます。もちろん、派生クラスは独自のデストラクタを取得しますが、ほとんどの場合、コンパイラによって生成されたデストラクタ (サブオブジェクト デストラクタへの必須の呼び出し以外には何もしません) で十分です。

于 2013-05-07T17:57:54.147 に答える
1

あなたの例から、最も簡単なことは次のとおりです。

class A
{
  public:
    virtual ~A()
    {
      // Do stuff
    }
}
于 2013-05-07T18:01:58.650 に答える