Heim >Backend-Entwicklung >C++ >Warum können wir einen Zeiger auf Const in C löschen?
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!