Dies ist ein vereinfachtes Beispiel zur Veranschaulichung der Frage:
class A {};
class B
{
B(A& a) : a(a) {}
A& a;
};
class C
{
C() : b(a) {}
A a;
B b;
};
Also ist B für die Aktualisierung eines Teils von C verantwortlich. Ich habe den Code durch Lint geführt und es ging um das Referenzmitglied: Lint # 1725 . Hier geht es darum, auf Standardkopien und -zuweisungen zu achten, was fair genug ist, aber Standardkopien und -zuweisungen sind auch mit Zeigern schlecht, sodass es dort wenig Vorteile gibt.
Ich versuche immer, Referenzen zu verwenden, wo ich kann, da nackte Zeiger unsicher darüber einführen, wer für das Löschen dieses Zeigers verantwortlich ist. Ich bevorzuge es, Objekte nach Wert einzubetten, aber wenn ich einen Zeiger benötige, verwende ich auto_ptr in den Mitgliedsdaten der Klasse, der der Zeiger gehört, und gebe das Objekt als Referenz weiter.
Ich würde im Allgemeinen nur dann einen Zeiger in Mitgliedsdaten verwenden, wenn der Zeiger null sein oder sich ändern könnte. Gibt es andere Gründe, Zeiger gegenüber Referenzen für Datenelemente vorzuziehen?
Stimmt es, dass ein Objekt, das eine Referenz enthält, nicht zuweisbar sein sollte, da eine Referenz nach der Initialisierung nicht geändert werden sollte?