明示的なデストラクター呼び出し: いつ、なぜ
一般に、 C では明示的なデストラクター呼び出しは推奨されません。ただし、C 11 標準のセクション 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 を使用して作成されているため、明示的なデストラクター呼び出しが許可されます。このようなオブジェクトを破棄するには、そのデストラクターを明示的に呼び出す必要があります。
配置の削除以外に、デストラクターを明示的に呼び出す正当な理由はほとんどありません。 1 つの可能性は、簡単に破壊可能なオブジェクトを手動で破壊することですが、これは特に便利ではありません。
追加の注意
明示的なデストラクター呼び出しを回避するルールの一般的に引用される例外ローカル変数に関係します。ただし、これは正確ではありません。ローカル変数に対してデストラクターを明示的に呼び出さないでください。
以上がC でデストラクターを明示的に呼び出してもよいのはどのような場合ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。