2014-01-21 15 views
17

§8.5/6 im Entwurf N3797 sagt:Wann würde eine Referenz Null initialisiert werden?

Um ein Objekt oder Referenz des Typs T bedeutet Null initialisieren:

  • ...
  • wenn T eine Referenz-Typ, kein Initialisierung wird durchgeführt.

Ich möchte ein Beispiel für eine Referenz haben, die Null-initialisiert ist.

+0

nicht wahr? Was? das ist nicht möglich –

+0

@yngum: Aber wie kann eine Referenz uninitialisiert sein ist wahrscheinlich die OPs Frage – PlasmaHH

+0

@ BЈovie: Wenn ja, dann ist die Follow-up-Frage, "Warum enthält der Standard Sprache, um einen unmöglichen Fall zu decken?". Und wenn nicht, dann ist die Folgefrage: "Warum erlaubt der Standard einen unsinnigen Fall?" :-) –

Antwort

16

Später heißt es in der Norm: "Jedes Objekt mit statischer Speicherdauer wird beim Programmstart mit Null initialisiert, bevor eine andere Initialisierung stattfindet." Wenn Sie z.B. im globalen Gültigkeitsbereich

int x; 
int& r = x; 

r wird zuerst null initialisiert und dann mit x initialisiert. Als Referenz bedeutet Null-initialisiert nichts, also ist es nur technische Natur.

+0

(+1) Sie könnten Recht haben. Zumindest macht es Sinn. – Alexander

+0

Beachten Sie, dass eine Referenz * nicht notwendigerweise * ein Objekt ist. Ein Objekt ist eine Speicherregion, aber es ist nicht angegeben, ob eine Referenz Speicher benötigt. Dies ändert jedoch nichts an der Gültigkeit Ihrer Antwort. –

+1

@JosephMansfield Machen Sie es zu einem Klassentyp mit einem Referenzelement. – dyp

Verwandte Themen