4

私はbaseクラスとクラスを継承するクラスを持っていますbase:

class base
{
};

class derived : public base
{ 
    std::string str;
};

derivedクラスへのポインターを使用してクラスを管理する必要がありbaseますが、次のコードはメモリ リークを引き起こします。

base* ptr = new derived();
delete ptr;

をキャストptrする必要がありますか、それともより良い代替手段がありますか?

4

1 に答える 1

7

派生クラスのデストラクタが実行時に検出されて呼び出されるように、基本クラスに仮想デストラクタが必要です。詳細については、この質問と回答を参照してください。

于 2012-07-04T19:14:16.990 に答える