C++ Klassen: Aufbau, Konstruktoren und Speicherverwaltung
Eingeordnet in Informatik
Geschrieben am in
Deutsch mit einer Größe von 3,12 KB
Teile einer Klasse
Zugriffsbereiche
- Privater Bereich: Nur Elementfunktionen (Member-Funktionen) der Klasse können auf private Elemente zugreifen. Abgeleitete Klassen (Descendants) haben keinen Zugang zu den privaten Mitgliedern einer Klasse.
- Geschützter Bereich (protected): Nur Member-Funktionen einer Klasse und die Mitglieder ihrer abgeleiteten Klassen haben Zugriff.
- Öffentlicher Bereich (public): Bestimmte Mitglieder sind für alle Member-Funktionen einer Klasse sowie von außen sichtbar.
Regeln für Klassenabschnitte
- Abschnitte der Klasse können mehr als einmal in beliebiger Reihenfolge erscheinen.
- Wenn nichts angegeben ist, wird der Abschnitt in C++ standardmäßig als private behandelt.
- Die Gruppierung von Daten im öffentlichen Bereich sollte vermieden werden, um das Design zu vereinfachen. Datenmitglieder sollten in der Regel im geschützten Bereich liegen, wobei der Zugriff über Member-Funktionen gesteuert wird.
Möglichkeiten zum Erstellen eines Objekts
1. Deklaration als globales Objekt, deklariertes globales Objekt oder vorübergehender Aufruf des new-Operators oder durch einen expliziten Aufruf eines Konstruktors.
Typen von Konstruktoren
- Default-Konstruktor:
Klasse();
Wenn kein Konstruktor definiert ist, erzeugt der Compiler automatisch einen Standard-Konstruktor. Bei globalen Objekten initialisiert dieser numerische Daten mit Null und alphanumerische Zeichen entsprechend. Lokale Objekte werden ohne explizite Initialisierung oft mit unbestimmten Werten (Speichermüll) erstellt. - Expliziter Konstruktor mit Argumenten:
Klasse(Argumente);
Hier muss bei der Deklaration des Objekts ein Wert in einer Liste (im Anschluss an die Deklaration) angegeben werden. - Expliziter Konstruktor mit Standard-Argumenten:
Klasse(Argumente = Initialwert);
Ein Weg, um die Anzahl der Konstruktoren durch die Verwendung von Standard-Argumenten zu verringern. - Copy-Konstruktor:
Klasse(const Klasse &initial);
Erstellt ein Objekt durch Zuweisung eines anderen Objekts desselben Typs zum Zeitpunkt der Deklaration.
Speicherverwaltung und Destruktoren
Operator new: Speicher kann für ein Objekt oder ein Array von Objekten dynamisch auf dem Heap (freier Speicher) zugewiesen werden. Der Operator liefert einen Zeiger auf den reservierten Speicherbereich des angegebenen Typs zurück.
Destruktor: Eine spezielle Member-Funktion, die verwendet wird, um ein Objekt aus dem Speicher zu entfernen und belegte Adressen freizugeben. Er wird automatisch aufgerufen, wenn ein Objekt seinen Geltungsbereich verlässt.
Der this-Zeiger
this-Zeiger: Ein Zeiger, der automatisch an jede Member-Funktion übergeben wird, wenn diese aufgerufen wird. Die Funktion erhält so automatisch einen Zeiger auf das aktuelle Objekt.
PUTOS