重载自增++和自减--运算符

1.重载++和–运算符

  • 自增++和自减–都是一元运算符,它的前置形式和后置形式都可以被重载。请看下面的例子:
        #include "iostream"
        #include "iomanip"
    
        using namespace std;
    
        // 时间类
        class times{
            public:
                times():m_min(0), m_sec(0){};
            public:
                void set_zero(){m_min = 0; m_sec = 0;}
                times run();  // 运行
                times operator++();  // 前置++
                times operator++(int n);  // 后置++,在这个函数中参数n是没有任何意义的,它的存在只是为了区分是前置形式还是后置形式
                friend ostream & operator<< (ostream &out, const times &t);
            private:
                int m_min;
                int m_sec;
        };
    
        times times::run(){
            ++m_sec;
            if(m_sec == 60){
                m_min++;
                m_sec = 0;
            }
            return *this; 
        }
    
        times times::operator++(){
            return run();
        }
    
        times times::operator++(int n){
            times t = *this;
            run();
            return t;  // 对象本身
        }
    
        ostream & operator<< (ostream &out, const times &t){
            out << setfill('0') << setw(2) << t.m_min << ":" << setw(2) << t.m_sec;
            return out;
        }
    
    
    
    
        int main(){
            times t1, t2;
            t1 = t2++;
    
            cout << "t1: "<< t1 <<endl;
            cout << "t2: "<< t2 <<endl;
            t1.set_zero();
            t2.set_zero();
            t1 = ++t2;
            cout << "t1: "<< t1 <<endl;
            cout << "t2: "<< t2 <<endl;
    
            return 0;
        }
    
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值