Kursinhalt
C++ OOP
C++ OOP
Was ist ein Destruktor der Klasse
Destruktoren sind spezielle Memberfunktionen, die aufgerufen werden, wenn die Lebensdauer eines object's
endet. Ihr Hauptzweck besteht darin, Ressourcen freizugeben, die das Objekt während seiner Lebensdauer erworben haben könnte.
Syntax des Destruktors
Obwohl sie entgegengesetzte Zwecke erfüllen, ist das Erstellen eines Destruktors dem Erstellen eines Konstruktors sehr ähnlich. Sie teilen fast die gleichen Deklarationsprinzipien. Das allgemeine Vorgehen zur Erstellung ist:
Name: Er hat denselben Namen wie die Klasse, wird jedoch von einer Tilde (
~
) vorangestellt;Kein Rückgabewert: Er besitzt keinen Rückgabewert, nicht einmal void;
Keine Parameter: Er kann keine Parameter aufnehmen;
Automatischer Aufruf: Er wird automatisch vom Compiler aufgerufen, wenn das Objekt den Gültigkeitsbereich verlässt oder explizit gelöscht wird.
Automatischer Aufruf von Destruktoren
Der automatische Aufruf von Destruktoren bezieht sich auf das automatische Ausführen des Destruktors. Dies stellt sicher, dass vom Objekt gehaltene Ressourcen ordnungsgemäß freigegeben werden und hilft so, Speicher- und Ressourcenlecks zu vermeiden.
scope.cpp
delete.cpp
termination.cpp
int main() { { Example obj; // Object created } // Object goes out of scope here, destructor is invoked }
wenn ein Objekt außerhalb des Gültigkeitsbereichs gerät;
wenn der
delete
-Operator verwendet wird, um dynamisch zugewiesene Objekte zu löschen;wenn das Programm beendet wird.
Notwendigkeit von Destruktoren
Der Hauptzweck eines Destruktors ist die Freigabe von Ressourcen, die das Objekt während seiner Lebensdauer erworben hat. Dazu gehört das Schließen von Dateihandles, das Freigeben von Speicher (mittels new
) oder ähnliche Aufgaben.
ResourceHolder.cpp
FileHandler.cpp
class ResourceHolder { public: DynamicArray(int size) { data = new int(100); } ~DynamicArray() { delete data; } private: int* data; };
1. Was ist der Hauptzweck eines Destruktors?
2. Wie lautet die Syntax zur Deklaration eines Destruktors?
Danke für Ihr Feedback!