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