2017-10-25 2 views
0

Ich stieß auf folgende Aussage. Wie ist das möglich, dass zwei Dinge bei derselben Adresse liegen, d. H. Die tatsächliche Variable und die Referenzvariable haben dieselbe Speicheradresse?Wie Referenzen in cpp die gleiche Speicheradresse haben?

Unabhängig davon, wie eine Referenz implementiert wird, hat eine Referenz dieselbe Speicheradresse wie das Objekt, auf das sie verweist.

+4

Eine Referenz hat überhaupt keine Adresse. –

+1

Referenzen sind keine Objekte, haben keinen Speicher oder eine Größe und Sie können nicht 'std :: memcpy'. Immer wenn Sie versuchen, eines dieser Dinge zu tun, erhalten Sie die Eigenschaften des Objekts, auf das sie sich beziehen. Ein anderer kann die Standard-Zitate dafür ausgraben. – nwp

+1

Ein Verweis ist nur ein anderer Name für ein vorhandenes Objekt. Das ist alles. Wenn Sie also die Adresse nehmen, nehmen Sie die Adresse des Objekts. Natürlich wird es jedes Mal dasselbe sein. – StoryTeller

Antwort

5

Das ist, weil eine Referenz kein "Ding" ist: es ist ein alternativer Name für ein Objekt (das eine Variable sein kann).
Es hat keine Adresse: Wenn Sie versuchen, die Adresse eines Verweises zu erhalten, erhalten Sie nur die Adresse des Objekts, für das es einen Alias ​​enthält.

Der Satz ist irreführend.

+0

Ist "Ding" ein normativer Begriff: P – StoryTeller

+0

@StoryTeller, die für einen Spaß Standardvorschlag machen könnte, aber ich erinnere mich nur OP Satz;) – Quentin

3

Dies bedeutet, dass wenn Sie die Adresse der Referenzvariable nehmen (unter Verwendung von &), ist es das gleiche wie wenn Sie die Adresse der referenzierten Variablen nehmen. Dies ist der ganze Zweck von Referenzen, sie sind die gleiche Sache wie was sie "zeigen".

4

Dies bedeutet, dass die Implementierung einer Referenz ein Implementierungsdetail des Compilers ist. Sie können die Adresse einer Referenzvariablen nicht mit der & Adresse des Operators ermitteln. Es wird immer die Adresse der referenzierten Instanz ergeben.

Verwandte Themen