作者hunandy14 (Charlott.HonG)
看板C_and_CPP
標題[問題] const 位於 函式前 與 參數後 的意思
時間Thu Feb 23 00:48:49 2017
## 位於參數後
參考自:
https://goo.gl/33SyjS
const int & Array::operator[](int i) const {...}
^
這裡
## 位於函式名稱前
參考自:
https://goo.gl/vhhjWh
Point const operator+(Point const &lhs, Point const &rhs){...}
^
這裡(他會等於 const Point....)?
問題2,此外關於這篇我想再請問,我把它修改成
Point const & operator+(Point const &lhs, Point const &rhs){...}
^
這樣也可以正常運行,這有什麼區別嗎
(我這樣改沒什麼想法隨意測試的,意外發現居然沒出問題)
http://ideone.com/SpINnN
就在我上傳代碼時發現ideone編譯出來的結果出錯了
答案為0 (&回傳參考沒有複製出來被解構了的關係嗎)
怎麼在這我的環境編譯出來的是正確的
答案為2
編譯指令:
gcc version 6.2.0 (x86_64-posix-seh-rev1, Built by MinGW-W64 project)
g++ -Wall -std=c++17 "A0.cpp" -o "A0"
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.47.143.157
※ 文章網址: https://webptt.com/m.aspx?n=bbs/C_and_CPP/M.1487782131.A.AAF.html
※ 編輯: hunandy14 (114.47.143.157), 02/23/2017 01:15:25
※ 編輯: hunandy14 (114.47.143.157), 02/23/2017 01:19:27
1F:推 LPH66: 所以你已經懂了你上篇問的「函式後 const」的意思了嗎?02/23 01:36
沒有清楚意思,只是記住要做const版本函式前後要加;然後昨天又看到第三種方式加在
中間;回答的解決方案有懂意思。
上一篇主要想知道什麼時候會觸發const版本,就再發一篇了。
2F:→ LPH66: 函式前的話, 那東西是回傳值, 所以就跟回傳值有關02/23 01:37
好的,寫在前後是等價的嗎
Point const fun()
const Point fun()
※ 編輯: hunandy14 (115.82.1.81), 02/23/2017 10:24:57
想到一種可能,寫在最後面
void fun() const{…}
是限制 *this 嗎?
※ 編輯: hunandy14 (115.82.1.81), 02/23/2017 10:28:27
3F:→ uranusjr: 是 02/23 10:34
兩個都是嗎~~
※ 編輯: hunandy14 (140.127.112.105), 02/23/2017 11:01:55
4F:→ uranusjr: 你下面舉的 case 都正確, 不過 const T * != T * const 02/23 12:45