ホームページ > バックエンド開発 > C++ > C でデストラクターを明示的に呼び出してもよいのはどのような場合ですか?

C でデストラクターを明示的に呼び出してもよいのはどのような場合ですか?

Susan Sarandon
リリース: 2024-10-29 03:51:02
オリジナル
332 人が閲覧しました

 When is it Okay to Explicitly Call a Destructor in C  ?

明示的なデストラクター呼び出し: いつ、なぜ

一般に、 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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート