| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 928 人关注过本帖
标题:为什么输出操作符重载会出这个问题?
只看楼主 加入收藏
neeso
Rank: 2
等 级:论坛游民
帖 子:3
专家分:10
注 册:2017-11-15
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:1 
为什么输出操作符重载会出这个问题?
#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)
我想知道为什么第三行输出和第四行不一样,
(第七行和第八行也一样有这个问题)
求大佬给解释一下,谢谢!
*/
搜索更多相关主题的帖子: 输出 重载 int operator cout 
2017-11-20 21:45
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9031
专家分:54061
注 册:2011-1-18
收藏
得分:20 
http://zh.
2017-11-21 10:54
快速回复:为什么输出操作符重载会出这个问题?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.037129 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved