6-1 Point类的运算 (10 分)

定义Point类,有坐标x,y两个私有成员变量;对Point类重载“+”(相加)、“-”(相减)和“==”(相等)运算符,实现对坐标的改变,要求用友元函数和成员函数两种方法实现。对Point类重载<<运算符,以使得代码 Point p; cout<<p<<endl;可以输出该点对象的坐标。

函数接口定义:

实现Point类。

裁判测试程序样例:


/* 请在这里填写答案 */



int main(int argc, char const *argv[])
{
    Point p1(2,3);
    cout<<p1<<endl;
    Point p2(4,5);
    cout<<p2<<endl;
    Point p3 = p1+p2;    
    cout<<p3<<endl;
    p3 = p2-p1;
    cout<<p3<<endl;
    p1 += p2;
    cout<<p1<<endl;
    cout<<(p1==p2)<<endl;
    return 0;
}

输入样例:

输出样例:

在这里给出相应的输出。例如:

2,3
4,5
6,8
2,2
6,8
0

 

全部完整代码:

#include<iostream>
using namespace std;

/* 请在这里填写答案 */
class Point
{
    double a, b;
public:
    Point(double a1=0, double b1=0)
    {
        a = a1;
        b = b1;
    }
    Point operator+(const Point& p)
    {
        return Point(a + p.a, b + p.b);
    }
    Point operator-(const Point& p)
    {
        return Point(a - p.a, b - p.b);
    }
    Point operator+=(const Point &p)
    {
        //return Point(a + p.a, b + p.b);不能写成像重载+运算符一样,写成这样返回的是a+=b的a
        a += p.a;
        b += p.b;
        return *this;
    }
    bool operator==(Point& p)     //重载==运算符是这样重载的 用bool函数返回是或否
    {
        if (a == p.a && b == p.b)
            return true;
        else
            return false;
    }

    friend ostream& operator<<(ostream &out,Point &p)    //注意只能重载为非成员函数(即不是成员函数,是友元函数或是普通函数即非成员非友元函数)的运算符有>>,<< 
    {
        out << p.a << "," << p.b;
        return out;
    }

//或者可以这样写

//friend ostream&operator<<(ostream &,Point &);友元函数声明
};

//friend ostream&operator<<(ostream &out,Point &p)

{

        out<<p.a<<","<<p.b;

       return out;

}
int main(int argc, char const* argv[])
{
    Point p1(2, 3);
    cout << p1 << endl;
    Point p2(4, 5);
    cout << p2 << endl;
    Point p3 = p1 + p2;
    cout << p3 << endl;
    p3 = p2 - p1;
    cout << p3 << endl;
    p1 += p2;
    cout << p1 << endl;
    cout << (p1 == p2) << endl;
    return 0;
}
 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值