关于重载运算符的const问题 在重载一个类的运算符的时候,什么情况下需要const那?我看了c++宝典,好像有的时候有,有的时候没有,大侠们给电见解 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 如果在一个类里面需要修改参数的值就不要加const啊,不修改的就加上conste.g. 一个类CTest,重载加号,那么会有如下的代码CTest operator+(const CTest &first, const CTest &second)这里因为两个加数都不会改变,所以要加上const,而另外一种情况CTest opeartor+=(CTest &first, const CTest &second){ first = first + second;}这里因为要修改first的值,所以就不加constb ,当然+=还可以以成员函数的方式重载的,这里就不再写了。 那么CTest operator+(const CTest &first, const CTest &second) const最后那个const是什么意思? 全部都不要const肯定没有问题。加上const只会对你写的代码加上额外的限制,如果不要const,什么限制都没有,结果还是一样的。不同的是,如果写的代码没有限制,容易犯错误。如果加上const写的代码有限制,即使犯错,编译器也可以提示出错信息。比如:CTest operator+(const CTest &first, const CTest &second) const参数的两个const限制你在operator+的实现代码中,不能修改first、second的取值,事实上也不需要修改,如果修改了,多半都是错误。最后一个const限制你不能修改this指向的对象的取值,也就是不能修改自身的状态。但是,如果写成这样CTest & opeartor+=(const CTest &second) const就无法实现,因为+=的运算不可能不修改自身,加上const会导致无法实现。 求一段IOCP的框架代码? 简单问题马上得分 现在,大家使用visual c++哪个版本的呀,英文还是中文? 数据采集 USB100芯片 请教一个关于MSXML的编译的问题 (使用/clr ) 怎样指定listctrl中某一个item为选中状态 请问怎样得到一个dll里的函数原型呢 有关OCX控件 〈〈〈〈〈〈〈〈〈〈如何更改CListCtrl的某一个SubItem的背景颜色???!!!!!!!!!!〉〉〉〉〉〉 VC++编程里的TRACE宏能运行时候,看到它的输出吗?? 高分求解! vc程序如何发布要通过注册吗
e.g. 一个类CTest,重载加号,那么会有如下的代码
CTest operator+(const CTest &first, const CTest &second)
这里因为两个加数都不会改变,所以要加上const,而另外一种情况
CTest opeartor+=(CTest &first, const CTest &second)
{
first = first + second;
}
这里因为要修改first的值,所以就不加constb ,当然+=还可以以成员函数的方式重载的,这里就不再写了。
最后那个const是什么意思?
CTest operator+(const CTest &first, const CTest &second) const参数的两个const限制你在operator+的实现代码中,不能修改first、second的取值,事实上也不需要修改,如果修改了,多半都是错误。最后一个const限制你不能修改this指向的对象的取值,也就是不能修改自身的状态。但是,如果写成这样
CTest & opeartor+=(const CTest &second) const
就无法实现,因为+=的运算不可能不修改自身,加上const会导致无法实现。