运算符重载的一例
thinking in c++上的一例:
#include <iostream>
using namespace std;
class Integer {
int i;
public:
Integer(int ii):i(ii) { }
const Integer operator+(const Integer& rv) const{
cout<<"operator+"<<endl;
return Integer(i+rv.i);
}
Integer& operator+=(const Integer& rv) {
cout<<"operator+="<<endl;
i+=rv.i;
return *this ;
}
void print() {
cout<<"i="<<i<<endl;
}
};
void main() {
cout<<"built-in types:"<<endl;
int i=1,j=2,k=3;
k+=i+j;
cout<<"user-defined types:"<<endl;
Integer ii(1),jj(2),kk(3);
kk+=ii+jj;
kk.print();
}
在下弄不明白const Integer operator+(const Integer& rv) const???
居然有三个const,我全去了再run一样通过,如果第一个是说重载的+=函数不会修改
参数,第二个const是说参数rv是个const,不可以被修改.那第三个const的用意呢?
还有return *this ?我知道这个意思是相当于返回i的值可就不明白this的指向?
请多指教,谢谢!!!