为什么输出操作符重载会出这个问题?
#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)
我想知道为什么第三行输出和第四行不一样,
(第七行和第八行也一样有这个问题)
求大佬给解释一下,谢谢!
*/