Spezielle Memberfunktionen (C++)
C++ definiert mehrere Arten von Funktionen, die nur als Klassenmember deklariert werden können – diese werden "speziellen Memberfunktionen" genannt. Diese Funktionen beeinflussen die Art und Weise, wie Objekte einer angegebenen Klasse erstellt, zerstört, kopiert und in Objekte anderer Typen konvertiert werden. Eine weitere wichtige Eigenschaft von vielen dieser Funktionen ist, dass sie implizit aufgerufen werden können (vom Compiler).
Die in diesem Abschnitt beschriebenen speziellen Memberfunktionen lauten wie folgt:
Konstruktoren. Ermöglichen die automatische Initialisierung von Objekten.
Destruktoren. Führen eine Bereinigung durch, nachdem Objekte explizit oder implizit zerstört wurden.
Konvertierungsfunktionen. Konvertieren zwischen Klassentypen und anderen Typen.
operator new-Funktion. Ordnet Speicher dynamisch zu.
operator delete-Funktion. Gibt zugeordneten Speicher mithilfe des Operators neu frei.
Zuweisungsoperator (operator=). Wird verwendet, wenn eine Zuweisung stattfindet.
Die Elemente in der vorangehenden Liste können für jede Klasse benutzerdefiniert werden.
Spezielle Memberfunktionen befolgen die gleichen Zugriffsregeln wie andere Memberfunktionen. Die Zugriffsregeln sind in Memberzugriffssteuerung beschrieben. In der folgenden Tabelle wird zusammengefasst, wie sich Member- und Friend-Funktionen verhalten.
Zusammenfassung des Funktionsverhaltens
Funktionstyp |
Wird die Funktion aus der Basisklasse geerbt? |
Kann die Funktion virtuell sein? |
Kann die Funktion einen Wert zurückgegeben? |
Ist die Funktion ein Member oder ein Friend? |
Generiert der Compiler die Funktion, wenn der Benutzer dies nicht tut? |
---|---|---|---|---|---|
Konstruktor |
Nein |
Nein |
Nein |
Member |
Ja |
Kopierkonstruktor |
Nein |
Nein |
Nein |
Member |
Ja |
Destruktor |
Nein |
Ja |
Nein |
Member |
Ja |
Conversion |
Ja |
Ja |
Nein |
Member |
Nein |
Zuweisung (operator=) |
Nein |
Ja |
Ja |
Member |
Ja |
new |
Ja |
Nein |
void* |
Statischer Member |
Nein |
delete |
Ja |
Nein |
void |
Statischer Member |
Nein |
Sonstige Memberfunktionen |
Ja |
Ja |
Ja |
Member |
Nein |
Friend-Funktionen |
Nein |
Nein |
Ja |
Friend |
Nein |