Zeiger auf Objekte selbsterstellter Klassen

new-Anweisung und Auswahloperator

Ein Pointer auf eine selbsterstellte Klasse wird völlig analog zum bisher gelernten deklariert. Auch die new-Zuweisung funktioniert gleich.

A a(3);
A* pa = &a;
A* pb, *pc;
a.x = 4;
pa->x = 4;     // Auwahloperator für Pointer auf Klassen
A* pb;
pb = new A;    // normale new-Anweisung
pb->x = 4;
pc = new A[10] // Array aus 10 A-Objekten

Wie man im Beispiel sieht wird die new-Anweisung ganz natürlich benutzt. Der Zugriff auf Elemente der Pointervariablen geschieht statt mit dem Auswahloperator . mit dem Auswahloperator ->. Dieser liefert das entprechende Element als LValue zurück (Es kann also ein Wert zugewiesen werden). Auch die Erstellung eines Arrays der selbsterstellten Klasse ist kein Problem. Der new-Aufruf stellt selber die Größe des betreffenden Objekts fest.

Soll beim new-Aufruf das Objekt gleich mit bestimmten Werten initialisiert werden, so kann das auch im new-Aufruf passieren. Das geht aber nicht, wenn ein Array des Objektes erzeugt werden soll. Genau genommen kann ein Array eines Objektes nur dann erzeugt werden, wenn ein Default-Konstruktor vorhanden ist. Dieser wird immer aufgerufen, wenn keine Parameter im new-Aufruf vorhanden sind.

A* a = new A;     // Default-Konstruktor wird aufgerufen
A* b = new A[10]; // 10fach Array. 10 mal Default-Konstruktor aufrufen
A* c = new A(4);  // Der Kostruktor A(int) wird benutzt
// aber
A* d = new A(?)[10](?)  // Keine Analogie für Arrays vorhanden