2016-04-11 23 views
2

Cevabın etrafında arama yapmayı denedim, ancak şimdiye kadar hiç şans yok. Sorum şu: neden referans değişkenleri tanımlandıkları zaman başlatılmalı? Teknik bir neden mi, yoksa standardın izin vermediği bir şey mi?Referans değişkenler neden tanım sırasında başlatılmalı?

int number = 42; 
int& numberRef; 
numberRef = number; 

Üstü izin verilmez, ancak kod aşağıda:

örneğin bu kodu alın derleyici başlatılmamış gibi başlatılmamış referans değişkeni tedavi edemeyiz Neden

int number = 42; 
int& numberRef = number; 

Işaretçi? Burada özlediğim bir şey mi var?

+1

referanslar ribaund olamaz: orada sözdizimsel anlamsal belirsizlik, ve bir referans atama aslında referans başlatma sadece referans bağlanacağı ifade nesnesine tahsis anlamına tanımlayarak çözüldü var başvurulan nesne. –

+0

Eğer başlatılmamış referanslar varsa, onlara neden ihtiyacımız olacak? Zaten işaretçilerimiz var. – Drop

+1

@Drop, kodumuzda '->' yazmak zorunda kalmamak için :) – Chiel

cevap

8

Bir referans başlatılmamışsa, bir başvuruyu atamak için yapılan her girişim başvurusuna atandığından, onu başlatmanın bir yolu yoktur.

int& numberRef;  // pretend this is allowed 
numberRef = number; // copies number into some random memory location 
+0

Ah, bunu bir kez daha düşünmüştüm. –

İlgili konular