新手求教 操作符重载的问题

longchisihai3 2012-03-27 08:51:38
自己设定比较函数

struct myComp
{
bool operator() (const int &a, const int &b)
{
return a < b;
}
};


比较函数后面可以没有const


class Mycmp
{
public:
string name;
float score;
bool operator < (const cmp &a) const // 最后必须有const 否则运行不通过
{
return a.score < score;
}
};


这里比较函数后面必须加上 const 哪位大神能说说这是为什么吗 为什么第一个可以不加const
...全文
43 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
bofrobber 2012-03-27
  • 打赏
  • 举报
回复
本质上,应该是默认的比较操作符函数是const类型的,如果你自定义的不是const就无法重载原来的默认比较操作符。这样就导致了2个函数的输入参数,函数名字一样,出现了冲突。
面包大师 2012-03-27
  • 打赏
  • 举报
回复
也不能调用那些能引起数据成员值变化的成员函数,只能调用const成员函数。
面包大师 2012-03-27
  • 打赏
  • 举报
回复
函数后面加const,这样的函数叫常成员函数。常成员函数可以理解为是一个“只读”函数,它既不能更改数据成员的值,
pengzhixi 2012-03-27
  • 打赏
  • 举报
回复
第一个你重载的是函数调用运算符。
第二个是重载的比较运算符。至于是否需要声明为const成员函数要看你使用这个运算符的时候this指针所指对象是否有const修饰符。

64,636

社区成员

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

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