C++中的操作符+号重载时操作数怎么可以只要一个?

来源:百度知道 编辑:UC知道 时间:2024/09/24 20:26:16
最近看到很多C++程序中“+”号操作符有时有一个。比如下面的程序:
#include<iostream>
using namespace std;
class Point{
int x, y;
public:
void set(int a, int b){ x=a, y=b; }
Point operator+(const Point& d){ //这里
Point s;
s.set(x+d.x, y+d.y);
return s;
}
friend ostream& operator<<(ostream& o, const Point& d)
{
return o<<"("<<d.x<<","<<d.y<<")\n";
}
};
int main(){
Point s,t;
s.set(2,5);
t.set(3,1);
cout<<s+t;
}
第七行就只有一个,这是怎么回事啊?不是说重载不能改变操作符的操作数吗?
万望高手指点指点。

实际上是2个不过有1个是默认的参数this

就是你的数据成员是默认的。

如果运算符被重载为类的成员函数,那么一元运算符没有参数,二元运算符只有一个右侧参数,因为对象自己成了左侧参数。

a + b...a 调用 + ,当然只需要一个参数b....

如果重载操作符为类的成员函数的话,类实例本身就是第一个操作数了