重载==的疑问?

flamingheart 2006-05-22 09:39:04
class foo{
public:
int key;
int data;
bool operator == (const foo &f)const{
return ((key == f.key) && (data == f.data));
}
};

为什么bool operator == (const foo &f)const后面的这个const去掉就不对呢?

...全文
172 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
zwzzwz 2006-05-23
  • 打赏
  • 举报
回复
flamingheart(火焰心) ( ) 信誉:68
有理
flamingheart 2006-05-23
  • 打赏
  • 举报
回复
续:

mutable会声明这个值为这个const对象的非const成员。而另一种方法是在const函数内利用this指针将该对象转变成非const对象,然后执行操作。
flamingheart 2006-05-23
  • 打赏
  • 举报
回复
哦,明白了

const对象:若使用一个const对象,那么只能调用该对象的const函数,若函数没有const后缀,那么编译器就会认为该函数会破坏常量规则。若我们想要在const对象里面修改某个值怎么办?很简单,将该值定义为mutable
herman~~ 2006-05-22
  • 打赏
  • 举报
回复
用const对象了
femalelover 2006-05-22
  • 打赏
  • 举报
回复
在哪里用CONST对象了? 反正给出的代码没什么问题呀
triace_zhang 2006-05-22
  • 打赏
  • 举报
回复
howyougen(走钢索的人) ( ) 信誉:89 2006-05-22 21:59:00 得分: 0
你是不是用const对象了
===================================================================
楼上正解。也只有这样才会导致程序编译错误了,看到这个foo就想到了C++ Primer.

howyougen 2006-05-22
  • 打赏
  • 举报
回复
你是不是用const对象了
fallinleave 2006-05-22
  • 打赏
  • 举报
回复
没有错误啊,我测试了一下,没什么错误。
本来后面那个const 只是确认本函数不会修改任何变量。
qhfu 2006-05-22
  • 打赏
  • 举报
回复
好像没有这种说法,应该是别的地方错了

64,685

社区成员

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

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