打印

运算符重载问题

[复制链接]
1233|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
gxgclg|  楼主 | 2013-12-30 18:41 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
//重载++(将Point类似于8进制的两位)
#include <iostream>
using namespace std;
class Point{
public:
    Point(int x=0,int y=0):x(x),y(y){}
    void display() const;
    Point &operator++();     //++前置
    Point operator++(int);   //++后置
public:
    int x,y;
};
Point &Point::operator ++(){
    y++;       //前置重载时会有后置重载的操作,这个是系统内部的++还是我这个类里面的后置运算符++??
    if(y>=8){
        y=0;
        x++;
        if(x>=8)
            x=0;
    }
    return *this;
}
Point Point::operator ++(int){
    //cout<<"Hello"<<endl;
    Point point=*this;
    ++ *this;
    return point;
}
void Point::display()const{
    cout<<x<<y<<endl;
}
int main()
{
    Point p(1,7),p1(1,7),p2,p3;
    p2=++p1;
    p2.display();
     
    p3=p++;
    p3.display();
     
    return 0;
}

相关帖子

沙发
无冕之王| | 2013-12-30 18:52 | 只看该作者
前++ C++规定带一个int参数

使用特权

评论回复
板凳
pkat| | 2013-12-30 19:01 | 只看该作者
y是int , 不会调用重载的operator++(Point&, int)

使用特权

评论回复
地板
火箭球迷| | 2013-12-30 19:10 | 只看该作者
前端++返回引用才合理

使用特权

评论回复
5
xsgy123| | 2013-12-30 21:20 | 只看该作者
没看太明白

使用特权

评论回复
6
无冕之王| | 2013-12-30 21:29 | 只看该作者
很容易出错的一个问题

使用特权

评论回复
7
vivilzb1985| | 2013-12-31 23:41 | 只看该作者
借助例程的,说明的还是蛮清楚的啊

使用特权

评论回复
8
smilingangel| | 2014-1-21 22:15 | 只看该作者
这个要是仔细的研究的话还是觉得蛮有意思的

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

177

主题

1653

帖子

1

粉丝