Kunstruktor und Destruktor Problem

Daddz wie soll den ein Konstruktor automatisch aufgerufen werden wenn der zum erstellen eines
Objektes dr Klasse ist. Wohl eher nicht.
 
FBIagent hat gesagt.:
Daddz wie soll den ein Konstruktor automatisch aufgerufen werden wenn der zum erstellen eines
Objektes dr Klasse ist. Wohl eher nicht.
Doch das stimmt schon.
Man muss den Konstruktor und Destruktor einer Klasse niemals aufrufen. Sie werden beide automatisch aufgerufen.
Konstrukor wird immer dann aufgerufen wenn ein Objekt instanziert wird:
Code:
// Instanz auf dem Stack:
MyClass a;

// Instanz auf dem Heap:
MyClass* a = new MyClass();

Der Destruktor wird in Variante 1 immer automatisch aufgerufen, wenn der aktuelle Scope verlassen wird (z.b. Rücksprung aus einer Funktion/Methode):
Bei Variante 2 muss natürlich explizit ein "delete" auf den Zeiger aufgerufen werden, dabei wird aber dann auch automatisch der Destruktor aufgerufen.

Es gibt also keine Notwendigkeit (davon abgesehen, weiss ich net ob das gewisse Compiler nicht sogar verbieten) einen Konsturktor oder Destruktor explizit aufzurufen.

Es gibt natürlich Ausnahmen wo man selbst dafür sorgt, dass Objekte erstellt/zerstört werden, dabei handelt es sich um sog. Factory-Klassen (Erzeugerklassen). Und selbst dort arbeitet man dann mit eigenen Methoden "Create" und "Destroy" oder äh.

Gruß Daniel
 
Es gibt also keine Notwendigkeit (davon abgesehen, weiss ich net ob das gewisse Compiler nicht sogar verbieten) einen Konsturktor...

Das geht aber nur wenn der Default Konstruktor noch vorhanden ist..
Sobald er nicht mehr vorhanden ist, sprich es nur Custom-
Konstruktoren mit Parametern gibt trifft das nichtmehr zu...
Wieso soll das der Compiler verbieten?
Das passiert höchstens wenn man nicht will das von einer Klasse eine Instanz
angelegt wird und man den Konstruktor als private deklariert, wie etwa
bei einem Singelton...

Gruß

RedWing
 
Zurück