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

作者: hunandy14 (Charlott.HonG)   2016-10-01 13:45:16
根據其他人的回覆,推出的答案
自己打了代碼做實驗
你也可以直接從裡面修改
可能會比較快弄懂~
程式碼: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):

Links booklink

Contact Us: admin [ a t ] ucptt.com