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.