開發平台(Platform): (Ex: VC++, GCC, Linux, ...)
G++, Linux
額外使用到的函數庫(Library Used): (Ex: OpenGL, ...)
問題(Question):
請問各位大大,為什麼這段程式碼 compile 不過?
小弟跪求解釋
int main() {
int *b = 0;
const int *& n = b;
}
錯誤訊息:
error: invalid initialization of non-const reference of type 'const int*&' from an rvalue of type 'const int*'
我有找到這篇說是因為type-safe 的關係:
http://stackoverflow.com/a/11514730
但是如果把程式改成這樣,也沒有type-safe,可是卻可以成功compile
int a = 0;
int *b = &a;
const int & n = *b;
cout << n << endl; // n = 0
*b = 3;
cout << n << endl; // n = 3
又看到了這篇的回答:http://stackoverflow.com/a/31412466
但是卻也看不太懂他的回答是什麼意思,為什麼它會回傳rvalue?
還有,為什麼宣告成 const int * const & n = b 就可以compile 過?
感謝各位大大!
程式碼(Code):(請善用置底文網頁, 記得排版)
http://ideone.com/W5kqRr
補充說明(Supplement):