デストラクターを手動で呼び出す場合: 呼び出してはいけない場合とそうでない場合
ソフトウェア エンジニアリングの常識では、オブジェクトのデストラクターを手動で呼び出すことは、パフォーマンスが低下していることを示しています。デザイン。ただし、特定の状況下では、明示的に破棄を呼び出すことが必要であるか、有益である場合もあります。
手動呼び出しが必要な状況
デストラクターを手動で呼び出す主な理由は、デストラクターを解放することです。基礎となるオブジェクト自体を破壊することなく、メモリを復元します。このシナリオは、メモリの割り当てと割り当て解除がオブジェクトの構築や破棄とは独立して処理される場合によく発生します。たとえば、コードでは次のとおりです。
char buffer[sizeof(MyClass)]; { MyClass* p = new(buffer)MyClass; p->dosomething(); p->~MyClass(); }
このコードでは、MyClass オブジェクトは、メモリの既存のバッファーに new を配置して構築されます。オブジェクトを解放するには、バッファに割り当てられたメモリが残っているため、そのデストラクタを明示的に呼び出す必要があります。
その他のケース
前述のシナリオとは別に、手動でデストラクタを呼び出します。次のような場合にも有益である可能性があります。
手動によるデストラクターの呼び出しを回避すべき場合
手動での呼び出し中デストラクターは特定の状況では便利ですが、コードベース全体で無計画に実行されるべきではありません。一般に、適切なリソース管理を確保するためにオブジェクトの初期化と破棄を自動的に処理するリソース取得は初期化 (RAII) イディオムを利用することをお勧めします。
以上がC でデストラクターを手動で呼び出すことができるのはいつですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。