Pointer als Rückgabewert von Funktionen (2/2)
Rückgabe eines Zeigers auf ein Element einer zugriffsbeschränkten
Klasse
Man sollte niemals einen Zeiger zurückgeben, der auf ein Element einer
Klasse zeigt, das zugriffsbeschränkt (also private oder
protected) ist. Das Problem ist dann nämlich, daß die
Zugriffsbeschränkung verloren geht.
class T {
protected:
U prvmb;
public:
U& rueckgabe_eines_protected_Elements() { return prvmb; }
};
T t;
cout << t.prvmb.geheimes_Eelement; // nicht moeglich. prvmb ist protected!
U spy = T.rueckgabe_eines_proteced_Elements();
cout << spy.geheimes_Element; // jetzt kann man darauf zugreifen
Ist ein Element zugriffsbeschränkt gibt es keinen Grund eine Referent auf
dieses Objekt nach außen zurückzugeben. Das angegebene Beispiel ist
also zu vermeiden.