1. ホーム
  2. c++

[解決済み] ベースの仮想デストラクタを明示的に呼び出す必要がありますか?

2022-03-25 05:49:10

質問

C++でクラスをオーバーライドする際(仮想デストラクタ付き)、継承元のクラスでデストラクタを再度仮想として実装していますが、ベースのデストラクタを呼び出す必要があるのでしょうか?

その場合、次のようなイメージです。

MyChildClass::~MyChildClass() // virtual in header
{
    // Call to base destructor...
    this->MyBaseClass::~MyBaseClass();

    // Some destructing specific to MyChildClass
}

そうだろうか?

解決方法は?

いいえ、デストラクタは構築時と逆の順序で自動的に呼び出されます。(ベースクラスは最後に)。 ベースクラスのデストラクタは呼び出さないでください。