重载流插入和前置与后置自增运算符

来源:互联网 发布:淘宝12寸兵人 编辑:程序博客网 时间:2024/06/05 06:04
/*point类*/
#ifndef POINT_H
#define POINT_H
using namespace std;
class Point
{
    friend ostream &operator<<(ostream &,const Point &);//重载<<
    friend istream &operator>>(istream &,Point &);//重载>>
public:
        Point(int m=0,int n=0);//构造函数
        ~Point();//析构函数
        void showPoint()const;//显示函数
        int getx()const;//获取X
        int gety()const;//获取Y
        Point &operator++();//重载前置的自增运算符
        Point operator++(int);
    private:
        int x,y;//圆心坐标
};

#endif // POINT_H


/*point类函数*/
#include <iostream>
#include <iomanip>
#include "point.h"

ostream &operator<<(ostream &output,const Point &point)
{
   cout <<"("<<point.x<<","<<point.y<<")";
   return output;
}
istream &operator>>(istream &input,Point &point)
{

    input.ignore();
    input>>point.x;
    input.ignore();
    input>>point.y;
    input.ignore();
    return input;
}

Point &Point::operator++()
{
    x++;
    y++;
    return *this;
}

Point Point::operator++(int)
{
  Point temp=*this;
  x++;
  y++;
  return temp;
}
Point::Point(int m,int n)//构造函数
{
    x=m;
    y=n;
}
Point::~Point()
{

}
int Point::getx()const
{
    return x;
}
int Point::gety()const
{
    return y;
}

void Point::showPoint()const//显示函数
{
    cout <<"("<<getx()<<","<<gety()<<")";
}


/*主函数*/
#include <iostream>

using namespace std;
#include "point.h"

int main()
{
    Point point;
    int a,b,c,d;
    cout<<"Please enter the point in the form (x,y):"<<endl;
    cout<<"Please enter :";
    cin>>point;
    cout<<"The point entered was:";
    cout<<point<<endl;

    cout<<"please enter the coordinates x and y of A:"<<endl;
    cin >>a>>b;
    cout<<"please enter the coordinates x and y of B:"<<endl;
    cin >>c>>d;
    Point A(a,b);
    Point B(c,d);

    cout <<"test 1"<<endl;
    cout<<"A is"<<A<<endl;
    cout <<"++A is"<<++A<<endl;

    cout <<"\ntest 2"<<endl;
    cout<<"B is"<<B<<endl;
    cout <<"++B is"<<++B<<endl;
    cout<<"B is"<<B<<endl;

    cout <<"\ntest 3"<<endl;
    cout<<"B is"<<B<<endl;
    cout <<"B++ is"<<B++<<endl;
    cout<<"B is"<<B<<endl;
    return 0;
}

原创粉丝点击