以下の内容はhttps://toburau.hatenablog.jp/entry/20090708/1247071878より取得しました。


基底クラスには仮想デストラクタ

Effective C++ 第2章7項
ある基底クラスから派生クラスを作成し、派生クラスのオブジェクトを基底クラスのポインタで扱うような場合。基底クラスのデストラクタが仮想でない場合、派生クラスのデストラクタが実行されなくなってしまう。

class Base {
public:
    Base();
    ~Base();
};

class Test : public Base {};

int main()
{
    Test* p = new Test();

    delete p;
}

このような場合、Baseクラスの部分だけが破棄されることになり、Testクラスで作成した部分は破棄されない。

class Base {
public:
    Base();
    virtual ~Base();
};

このようにデストラクタにvirtualを付けて仮想デストラクタにすればよい。




以上の内容はhttps://toburau.hatenablog.jp/entry/20090708/1247071878より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14