2012-03-14 19 views
2

在一個語句中寫入引用聲明和賦值有什麼問題嗎?我已經嘗試過使用gcc,它似乎工作。在同一語句中寫入引用聲明和賦值

int x = 10; 
cout << "x = " << x << "\n"; 

int &y = x = 11; 
cout << "x = " << x << "\n"; 
cout << "y = " << y << "\n"; 

給我的預期輸出

x = 10 
x = 11 
y = 11 

這個預期對大多數編譯器工作或者會不會有便攜的問題?

+0

更好地避免它,如果可能的話,即使它在大多數現代系統中都能正常工作。但爲什麼當你有其他安全路徑時要冒不必要的風險 – 2012-03-14 11:51:45

+0

@Rohit - 是的,我決定避開它,但是想要檢查它是否應該起作用,以及是否還有其他問題。 – DanS 2012-03-14 13:11:29

回答

5

在C++中,有一個賦值運算符,它可以在任何表達式中使用(至少在 原則中)。需要注意的是在:

int& y = x = 11; 

第一=操作;它是數據 定義的語法的一部分。 =後面是一個表達式,它必須在int類型的左值中產生 。由於xint,x = 11int。內置賦值運算符的結果是一個左值, 指的是作爲賦值目標的對象,因此 已符合必要條件。

當然,這並不意味着它是很好的代碼。