社区
C++ 语言
帖子详情
重载==的疑问?
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
打赏
收藏
重载==的疑问?
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去掉就不对呢?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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
打赏
举报
回复
好像没有这种说法,应该是别的地方错了
C++ 运算符
重载
前言 本文引用于“C语言中文网”,我整理出来放在博客,方便大家共同学习。所有知识点和代码均已亲测可用,如有
疑问
,可提出,一起讨论学习。 本章内容: 1. C++运算符
重载
的概念和原理 2. C++
重载
=(C++
重载
赋值运算符) 3. C++深拷贝和浅拷贝(C++深复制和浅复制) 4. C++运算符
重载
为友元函数 5. C++实现可变长度的动态数组 6. C++
重载
<<和>...
重载
=运算符为何要返回一个引用?
一个自定义类,如果没有
重载
其=运算符,那么编译器将自动生成一个。但是此编译器自动生成的
重载
函数可能不安全。这是因为它采用了所谓的“浅拷贝”,也就是对于指针而言,它拷贝的是指针的值,而不是其指向的内存空间。那么这个内存空间就有了两个指针指向它,且类对象要析构两次,但是内存空间只能被释放一次,那么第二次就会出现访问错误。 要避免这种“浅拷贝”问题,就需要
重载
=运算符。这是一个二元运算符,函数...
C++搞懂深拷贝初始化=与赋值(运算符
重载
)=的区别
C++搞懂深拷贝初始化=与赋值=的区别 代码 今天在学习右值引用时,遇到了深拷贝问题,以前也知道深拷贝与浅拷贝的区别,今天的
疑问
是,为什么不用
重载
=操作符在初始化时实现深拷贝,与赋值时=号的区别。 #include <iostream> #include <functional> using namespace std; class Test { private: int *data; int s_size; public: Test(size_t size
c/c++赋值函数(
重载
=号运算符)
c/c++赋值函数(
重载
=号运算符) 首先c++里的各种运算符都是用函数实现的,比如=,就等号函数。 所以当用=给一个对象赋值的时候,实际调用的是=号所对应的=号函数。 分析下面的代码 #include <iostream> using namespace std; class Test{ public: explicit Test(){ data = 0; } ...
Qt中C++运算符
重载
参考资料 [1]c++运算符
重载
总结
C++ 语言
64,685
社区成员
250,491
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章