注册 登录
编程论坛 C++教室

为什么输出操作符重载会出这个问题?

neeso 发布于 2017-11-20 21:45, 1105 次点击
#include<iostream>
using namespace std;
class coordinate
{
private:
    int x;//横坐标
    int y;//纵坐标
public:
    coordinate(int x1,int y1):x(x1),y(y1){}
    coordinate&  operator++();//重载前置++操作
    coordinate operator++(int);//重载后置++
    void display();//输出成员函数
};
//前置++,实现
coordinate& coordinate:: operator++()
{
    x++;
    y++;
    return *this;
}
//后置++实现
coordinate coordinate::operator++(int)
{
    coordinate temp=*this;//制作一个存储值
    this->x++;
    this->y++;
    return temp;
}


void coordinate::display()
{
    cout<<"("<<x<<","<<y<<")\n";
}

ostream& operator<<(ostream& out,coordinate a)//重载<<输出操作符
{
    a.display();
    return out;
}
#include<iostream>
#include"chongzai.h"
using namespace std;
int main()
{
    coordinate a(0,0);
    cout<<"前置++输出"<<endl;
    cout<<++a<<a;//前置++ 试验 值应为(1,1)
    cout<<a;
    cout<<"后置++输出"<<endl;
    cout<<a++<<a;//后置++ 试验值应为(1,1)换行(2,2)
    cout<<a;//值应为(2,2)
    return 0;
}
/*
试验中输出为
1...前置++输出
2...(1,1)
3...(0,0)
4...(1,1)
5...后置++输出
6...(1,1)
7...(1,1)
8...(2,2)
我想知道为什么第三行输出和第四行不一样,
(第七行和第八行也一样有这个问题)
求大佬给解释一下,谢谢!
*/
1 回复
#2
rjsp2017-11-21 10:54
http://zh.
1