→ CindyLinz: 你的「能不能」包含 explicit 轉型嗎? 112.121.78.5 08/09 13:04
不包含好了@@,我其實只是比較好奇這段的語法是否合法?
因為我曾經因為const int**和 int**的問題被VC++的compiler婊過,
所以有點混亂...
※ 編輯: jamod (60.249.2.10), 08/09/2016 13:19:12
※ 編輯: jamod (60.249.2.10), 08/09/2016 13:22:25
推 jeff7037: *&這樣的寫法能放到函式的引數。但這樣 114.24.38.28 08/09 21:20
→ jeff7037: 不行,可見Primer C++第7章函式271頁。 114.24.38.28 08/09 21:23
→ jeff7037: 第四章指標p121頁。 114.24.38.28 08/09 21:25
→ jeff7037: *&在函式裡,意為對傳來的引數deference 114.24.38.28 08/09 21:27
→ jeff7037: 可理解為取值。然不可在定義式這樣寫*& 114.24.38.28 08/09 21:28
推 jeff7037: 你有對*&賦值的動作。 114.24.38.28 08/09 21:30
感謝指點,但我還是有點小疑惑,以上方程式碼而言:
int *pi;
const int*& rpci = pi;
雖然會出錯,但是只要把第二行的const拿掉就能正確編譯了,
實際上我應該就是單純的對一個int pointer的別名進行初始化吧?@@
甚至寫成
const int*const & rpci = pi;
也是能正確編譯的,我不太能理解為何將要reference的pointer指定為const就能編譯?
有點好奇是compiler雞婆把我擋下的呢?還是在語法規則上就是不合法了?
※ 編輯: jamod (60.249.2.10), 08/10/2016 09:38:52
推 shietsd: non-const reference只能用non-const綁定 219.84.235.190 10/16 15:46
→ shietsd: 但con-ref可以綁所有的 const/non-const 219.84.235.190 10/16 15:47
推 shietsd: const int &ci = i 表示 ci 不能改i的值 219.84.235.190 10/16 15:54
→ shietsd: 但 i 自己可以改,你跑跑看就知道 219.84.235.190 10/16 15:54