作者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/cn.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