1. ホーム
  2. c++

[解決済み】C++で "delete this "は許されるのか?

2022-04-01 07:40:58

質問

を行うことは可能ですか? delete this; もし、delete-statement がそのクラスのインスタンスに対して実行される最後のステートメントであるなら?もちろん、そのクラスのインスタンスに対して this -ポインタは new リ作成される。

というようなことを考えています。

void SomeModule::doStuff()
{
    // in the controller, "this" object of SomeModule is the "current module"
    // now, if I want to switch over to a new Module, eg:

    controller->setWorkingModule(new OtherModule());

    // since the new "OtherModule" object will take the lead, 
    // I want to get rid of this "SomeModule" object:

    delete this;
}

こんなことしていいのかな?

どのように解決するのですか?

C++のFAQ Liteに、この件に特化したエントリーがあります。

この言葉に集約されていると思います。

<ブロッククオート

注意さえすれば、オブジェクトが自殺しても大丈夫(これを削除)。