Re: [問題] const int *& 給值的問題

看板C_and_CPP作者 (Charlott.HonG)時間7年前 (2016/10/01 13:45), 7年前編輯推噓0(000)
留言0則, 0人參與, 最新討論串2/2 (看更多)
根據其他人的回覆,推出的答案 自己打了代碼做實驗 你也可以直接從裡面修改 可能會比較快弄懂~ 程式碼:https://goo.gl/bYgnhJ int* p1 = nullptr; int* & a = p1; /* 為什麼 int 前不能加 const */ const int* & a = p1; int num=1; 假設你設定了 a=&num1 先印出來 *a=> 印出 1 然後你對 *p1 做修改 *p1=2; 我們在印一次 *a=> 印出2 這違反const的定義不能被修改 可以推出,我們連上一層 也一起限制就沒事了~ const int* p1=nullptr; const int* & a = p1; ※ 引述《seanooxox (0n羊)》之銘言: : 開發平台(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): -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 118.171.8.192 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1475300719.A.CCF.html ※ 編輯: hunandy14 (118.171.8.192), 10/01/2016 17:47:02
文章代碼(AID): #1NxqrlpF (C_and_CPP)
文章代碼(AID): #1NxqrlpF (C_and_CPP)