关于运算符重载的一些疑问

来源:百度知道 编辑:UC知道 时间:2024/05/28 14:37:46
初学C++,关于运算符重载有些疑问

class integer{
int i;
public:
integer(int X){i=X;}
const integer operator+(const integer& rv) const{
cout<<"operator+"<<endl;
return integer(i+rv.i);
}
}
上面是重载加号的代码的一部分,我不知道参数rv是什么意思,有什么用,请高手仔细给我讲一讲

rv就是一个integer类的对象,它里面有一个i属性,就是rv的数值。重载运算+中本应该是有两个参数的,因为我们知道+是二元运算符,但由于它被定义成了类的成员函数,所以实际上它已经有了一个隐含的参数也就是调用它的那个对象。所以此处的rv就是给了它另外一个操作数,这个操作数也是一个integer对象,重载之后程序把两个对象的i属性相加并通过integer的构造函数将结果变为一个integer对象后返回。

+运算符肯定涉及两个操作数啊,左边那个就是调用重载过的+函数的类实例,右边那个就是rv对应的了

const integer& rv
表示另一个这种类型的变量而已,仅仅一个名称

比如说有一个integer temp_integer;
传入的时候rv就代表temp_integer