Pointer als Rückgabewert von Funktionen (1/2)
Die Rückgabe von Pointern kann Probleme verursachen und ist daher mit
Vorsicht zu genießen.
Rückgabe von Zeigern auf lokale Variablen
Gibt man einen Zeiger auf eine in einer Funktion neu definierte lokale Variable
zurück, so ist diese nach Verlassen der Funktion nicht mehr vorhanden.
Das Verhalten bei Dereferenzierung ist dann zumindest nicht definiert.
class T;
T* rueckgabe_eines_T_Zeigers() {
T objekt;
return &T; // Rueckgabe von Zeiger auf T
} // T wird beim Verlassen gelöscht
void main() {
class T *t;
t = rueckgabe_eines_T_Zeigers();
cout << *t; // Das Objekt ist nicht mer vorhanden!!
}
Um dieses Problem zu vermeiden sollte in diesem Fall kein Zeiger, sondern
das Objekt selber zurückgegeben werden. Bei der Rückgabe einer
Referenz wird man das selbe Problem haben.