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.
Was ist der Unterschied zwischen der Verwendung des deleteOperators für das Array-Element und der Verwendung der Array.spliceMethode ? Zum Beispiel: myArray = ['a', 'b', 'c', 'd']; delete myArray[1]; // or myArray.splice (1, 1); Warum überhaupt die Spleißmethode, wenn ich Array-Elemente wie mit Objekten löschen kann?
class my_class { ... my_class(my_class const &) = delete; ... }; Was bedeutet = deletedas in diesem Zusammenhang? Gibt es andere "Modifikatoren" (außer = 0und = delete)?
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 …
Ich habe eine, class Adie eine Heap-Speicherzuordnung für eines ihrer Felder verwendet. Klasse A wird instanziiert und als Zeigerfeld in einer anderen Klasse gespeichert ( class B. Wenn ich mit einem Objekt der Klasse B fertig bin, rufe ich auf delete, von dem ich annehme, dass es den Destruktor aufruft …
Okay, ich denke, wir sind uns alle einig, dass das, was mit dem folgenden Code passiert, undefiniert ist, je nachdem, was übergeben wird. void deleteForMe(int* pointer) { delete[] pointer; } Der Zeiger kann viele verschiedene Dinge sein, und daher delete[]ist es undefiniert , eine bedingungslose Ausführung durchzuführen . Nehmen wir …
Ein C ++ - Buch, das ich gelesen habe, besagt, dass beim Löschen eines Zeigers mit dem deleteOperator der Speicher an der Stelle, auf die er zeigt, "freigegeben" wird und überschrieben werden kann. Außerdem wird angegeben, dass der Zeiger weiterhin auf dieselbe Position zeigt, bis er neu zugewiesen oder auf …
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 …
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 …
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 …
In c++03es ist ziemlich klar , dass ein Null - Zeiger zu löschen hat keine Wirkung. In der Tat wird ausdrücklich darauf hingewiesen §5.3.5/2: In beiden Alternativen hat die Operation keine Auswirkung, wenn der Wert des Operanden "Löschen" der Nullzeiger ist. Im aktuellen Entwurf für c++0xdiesen Satz scheint jedoch 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 …
Das Erstellen eines neuen Objekts der Klasse C mit dem Operator new () führt hier zu einem Fehler: class C { public: C() {} virtual ~C() {} void operator delete(void*) = delete; }; int main() { C* c = new C; } mit C2280: 'void C::operator delete(void *)': function was …
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() { …
We use cookies and other tracking technologies to improve your browsing experience on our website,
to show you personalized content and targeted ads, to analyze our website traffic,
and to understand where our visitors are coming from.
By continuing, you consent to our use of cookies and other tracking technologies and
affirm you're at least 16 years old or have consent from a parent or guardian.