C でのデストラクターの明示的な呼び出し
一般に、デストラクターを明示的に呼び出すことは推奨されませんが、それが必要になる特定のシナリオもあります。このようなケースの 1 つは、テンプレート引数に関する C 11 標準 N3485 セクション 13.4.5 で例示されています。
コード スニペットで示されているように、クラス テンプレート特殊化のオブジェクトに対してデストラクターを明示的に呼び出して、明示的に指定することが許可されています。テンプレート引数:
<code class="cpp">template<class T> struct A { ~A(); }; void f(A<int>* p, A<int>* q) { p->A<int>::~A(); // OK: destructor call q->A<int>::~A<int>(); // OK: destructor call }</code>
この明示的な呼び出しは、配置 new を使用して作成されたオブジェクトを処理する場合に必要になります。このような場合、関連付けられたメモリを適切に解放するには、デストラクタを明示的に呼び出す必要があります。
配置削除以外にも、明示的なデストラクタ呼び出しが正当化される他の限られたシナリオがあります。
以上が内容を念頭に置いて、質問ベースのタイトルをいくつか示します。 * C でデストラクターを明示的に呼び出す必要があるのはどのような場合ですか? * なぜ C でデストラクターを明示的に呼び出す必要があるのでしょうか? ※SPとはの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。