C で Const へのポインタを削除できるのはなぜですか?

Patricia Arquette
リリース: 2024-11-03 09:29:03
オリジナル
883 人が閲覧しました

Why Can We Delete a Pointer to Const in C  ?

Const (T const*) へのポインターの削除

C では、非 const メンバー関数を削除できないことは既知の事実です。 const ポインタを使用して呼び出されます。ただし、const へのポインターを削除するときに、const メソッドではないクラスのデストラクターを呼び出した場合でも、一般的な例外が発生します。この明らかな異常により、なぜこれが許可されるのかという疑問が生じます。

その答えは、オブジェクトの必要な破壊をサポートすることにあります。オブジェクトが動的に作成される場合、それが const であっても、オブジェクトを削除する方法が不可欠です。これは、const オブジェクトの変更に制限があるにもかかわらず、const ポインターの削除を許可することで実現されます。

次のコードは、この動作を示しています。

<code class="cpp">// dynamically create object that cannot be changed
const Foo * f = new Foo;

// use const member functions here

// delete it
delete f;</code>
ログイン後にコピー

別の例は、この動作が制限されていないことを示しています。動的に作成されたオブジェクトへ:

<code class="cpp">{
 const Foo f;
 // use it
} // destructor called here</code>
ログイン後にコピー

const オブジェクトに対してデストラクターを呼び出すことができない場合、const オブジェクトの使用は完全に禁止されます。この許容値により、const ステータスに関係なく、オブジェクトが適切に破棄されることが保証されます。

以上がC で Const へのポインタを削除できるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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