Heim >Backend-Entwicklung >C++ >Warum können wir einen Zeiger auf Const in C löschen?

Warum können wir einen Zeiger auf Const in C löschen?

Patricia Arquette
Patricia ArquetteOriginal
2024-11-03 09:29:03934Durchsuche

Why Can We Delete a Pointer to Const in C  ?

Löschen eines Zeigers auf Const (T const*)

In C ist es eine bekannte Tatsache, dass nicht-konstante Memberfunktionen nicht möglich sind wird mit einem const-Zeiger aufgerufen. Beim Löschen eines Zeigers auf const tritt jedoch eine häufige Ausnahme auf, obwohl dieser den Destruktor der Klasse aufruft, bei dem es sich nicht um eine const-Methode handelt. Diese scheinbare Anomalie wirft die Frage auf: Warum ist das erlaubt?

Die Antwort liegt in der Unterstützung der notwendigen Zerstörung von Objekten. Wenn Objekte dynamisch erstellt werden, ist es wichtig, eine Möglichkeit zu haben, sie zu löschen, auch wenn sie konstant sind. Dies wird erreicht, indem das Löschen von Konstantenzeigern trotz der Einschränkung beim Ändern von Konstantenobjekten zugelassen wird.

Der folgende Code demonstriert dieses Verhalten:

<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>

Ein weiteres Beispiel zeigt, dass dieses Verhalten nicht eingeschränkt ist zu dynamisch erstellten Objekten:

<code class="cpp">{
 const Foo f;
 // use it
} // destructor called here</code>

Wenn Destruktoren nicht für const-Objekte aufgerufen werden könnten, würde dies die Verwendung von const-Objekten vollständig verbieten. Diese Zulage gewährleistet die ordnungsgemäße Zerstörung von Objekten, unabhängig von ihrem Konstituentenstatus.

Das obige ist der detaillierte Inhalt vonWarum können wir einen Zeiger auf Const in C löschen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn