关于重载运算符的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会导致无法实现。 SetDIBitsToDevice”: 找不到标识符 如何读去TABLE中每个单元格的内容呢。 有这样一个函数,我该怎样调用? 如何根据进程的句柄的到进程执行文件的路径 郁闷,难道ATL控件的效率这么低吗? 入門提問 希望大家來看看,幫幫忙,謝謝!!! 关于DLL中的函数 子对话框连接数据源问题 socket如何绑定无线网卡? 在VC++6.0中如何屏蔽掉编译时的某一警告信息? 高分求解! 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会导致无法实现。