2017-05-06 4 views
3

Ich habe einen C++ - Objekt 'bar', die einen Verweis auf ein Objekt 'foo' speichern. Wenn dieses Objekt 'foo' zerstört wird: Wird meine Referenz ungültig? Hier das Beispiel:Lebenszyklus von C++ - Referenzen

Das Programm scheint perfekt zu laufen und Valgrind erkennt keinen Fehler. Ist es richtig ?

+0

Der korrekte Begriff ist "Zeiger"; Der Begriff "Referenz" hat in C++ bereits eine spezifische, technische Bedeutung, die sich von Ihren Vorstellungen unterscheidet. –

+2

@Kerrek Sag was? 'const Foo &foo;' ist eine Referenz. –

+0

@NeilButterworth: 'bar' ist ein Zeiger; Ich bezog mich auf die Aussage des OP, dass "Balken einen Verweis auf ein Objekt foo speichert". Vielmehr speichert "bar die Adresse eines (unbenannten) Bar-Objekts (das wiederum eine Referenz enthält"). Ich habe vielleicht an etwas anderes gedacht, als das, woran der OP gedacht hat. –

Antwort

1

Referenzen in C++ sind nicht wie Referenzen in verwalteter Speichersprache. Wenn das Objekt, auf das verwiesen wird, abstirbt, ist die Referenz ungültig und weist möglicherweise ein Handgranatenverhalten auf.