2016-04-11 140 views
2

我試過四處尋找答案,但至今沒有運氣。我的問題是 - 爲什麼參考變量在定義時需要初始化?這是技術原因,還是標準不允許的?爲什麼參考變量需要在定義時初始化?

拿這個代碼,例如:

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

上面是不允許的,但下面的代碼是:

int number = 42; 
int& numberRef = number; 

爲什麼不能編譯器把一個未初始化的引用變量像一個未初始化指針?有什麼我在這裏失蹤?

+1

引用不能被反彈:有一個句法語義歧義,並且它通過定義指定給一個基準實際上意味着分配給被稱爲對象,由此參考的初始化僅結合所述參考解決引用的對象。 –

+0

如果會有未初始化的引用,爲什麼我們需要它們呢?我們已經有了指針。 – Drop

+1

@Drop,避免在我們的代碼中編寫' - >':) – Chiel

回答

8

如果引用未初始化,則無法對其進行初始化,因爲任何分配給引用的嘗試都會將其分配給其所指對象。

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

啊,我正在重新考慮它..再次。 –

相關問題