有关函数const重载的对错

菜鸡的逆袭之路 2017-01-01 09:38:29
RT,为什么const string &shorterString(const string&,const string&) 与
string &shorterString(string&,String&)可以重载,而
int calc(int,int)和int calc(const int,const int)却不能重载?
同是const和非const,请问const重载的条件是什么?
...全文
91 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
ri_aje 2017-01-02
  • 打赏
  • 举报
回复
calc 那种写法经过 prototype adjustment 以后生成同样的 signature,所以没法重载。
幻夢之葉 2017-01-01
  • 打赏
  • 举报
回复
const 参数用在引用和指针可以作为一个重载版本(const返回值并不在考虑列表) int calc(int,int)和int calc(const int,const int)却不能重载? 答: 参数值传递,不管如何,函数用到的始终是实参的一个副本。 所以你加const是没有任何意义的 在值传递的参数中,const参数跟非const参数的两个版本所代表的含义完全相同,因此不支持重载

64,648

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧