Als «delete-operator» getaggte Fragen

In der Programmiersprache C ++ ruft der Löschoperator den Destruktor des angegebenen Arguments auf und gibt den durch new zugewiesenen Speicher an den Heap zurück.




10
Ist das Löschen erlaubt?
Ist es erlaubt, delete this;wenn die delete-Anweisung die letzte Anweisung ist, die auf dieser Instanz der Klasse ausgeführt wird? Natürlich bin ich mir sicher, dass das durch den thisZeiger dargestellte Objekt nur newerstellt wurde. Ich denke über so etwas nach: void SomeModule::doStuff() { // in the controller, "this" object of …





12
Warum setzt delete den Zeiger nicht auf NULL?
Ich habe mich immer gefragt, warum die automatische Einstellung des Zeigers auf NULL nach dem Löschen nicht zum Standard gehört. Wenn dies behoben wird, treten viele der Abstürze aufgrund eines ungültigen Zeigers nicht auf. Ich kann mir jedoch einige Gründe vorstellen, warum der Standard dies eingeschränkt hätte: Performance: Eine zusätzliche …

6
Löschen eines Zeigers in C ++
Kontext: Ich versuche, meinen Kopf um Zeiger zu wickeln. Wir haben sie erst vor ein paar Wochen in der Schule gesehen und als ich heute übte, bin ich auf einen Dummkopf gestoßen. Problem, es kann für Sie sehr einfach sein, aber ich habe wenig bis gar keine Programmiererfahrung. Ich habe …

5
Löschen eines Zeigers auf const (T const *)
Ich habe eine grundlegende Frage zu den const-Zeigern. Ich darf keine Nicht-Const-Member-Funktionen mit einem Const-Zeiger aufrufen. Ich darf dies jedoch mit einem const-Zeiger tun: delete p; Dies ruft den Destruktor der Klasse auf, der im Wesentlichen eine nicht konstante 'Methode' ist. Warum ist das erlaubt? Ist es nur um dies …


5
Wie ordnen Sie C ++ neu zu?
Wie kann ich reallocin C ++? Es scheint in der Sprache zu fehlen - es gibt newund deleteaber nicht resize! Ich brauche es, weil mein Programm, wenn es mehr Daten liest, den Puffer neu zuweisen muss, um es zu halten. Ich denke nicht, dass es die richtige Option ist, den …


3
Warum wird der Destruktor im Operator delete nicht aufgerufen?
Ich habe versucht, ::deleteeine Klasse in der davon zu fordern operator delete. Aber der Destruktor wird nicht aufgerufen. Ich habe eine Klasse definiert, MyClassderen operator deleteüberladen wurde. Das Globale operator deleteist ebenfalls überlastet. Die Überladung operator deletevon MyClassruft die überladene globale auf operator delete. class MyClass { public: MyClass() { …

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.