//编写Point类,重载+=和-=运算符,能够完成p1+=p2和p1-=p2的功能。
//【输入形式】int ,int
//【输出形式】
//【样例输入】1 2 3 4
//【样例输出】 p1=(1,2)
// p2=(3,4)
// p3=(4,6)
// p4=(-2,-2)
#include <iostream>
using namespace std;
class Point
{
public:
double x;
double y;
Point();//构造函数
friend Point operator+=(Point &a,Point &b);//重载+=运算符
friend Point operator-=(Point &a,Point &b);//重载-=运算符
friend istream& operator>>(istream&in,Point &a);//重载流插入运算符
friend ostream& operator<<(ostream&out,Point &a);//重载流提取运算符
};
Point::Point()
{
x=0;
y=0;
}
Point operator+=(Point &a,Point &b)
{
a.x+=b.x;
a.y+=b.y;
return a;
}
Point operator-=(Point &a,Point &b)
{
a.x-=b.x;
a.y-=b.y;
return a;
}
istream& operator>>(istream&in,Point &a)
{
in>>a.x>>a.y;
return in;
}
ostream& operator<<(ostream&out,Point &a)
{
out<<"("<<a.x<<","<<a.y<<")"<<endl;
return out;
}
int main()
{
Point p1,p2,p3,p4;//新建Point类对象p1,p2,p3,p4
int p1x,p1y,p2x,p2y;//建立临时变量
cin>>p1>>p2;//输入p1,p2
cout<<"p1="<<p1;
cout<<"p2="<<p2;//输出p1,p2
p1x=p1.x;
p1y=p1.y;
p2x=p2.x;
p2y=p2.y;
p1+=p2;
p3=p1;//赋值p3
cout<<"p3="<<p3;//输出p3
p1.x=p1x;
p1.y=p1y;//还原p1
p1-=p2;
p4=p1;//赋值p4
cout<<"p4="<<p4;//输出p4
}