C++_pen_重载(1)

普通运算符重载

  • C++准许以运算符命名函数

    string love = "i";
    
    love += " love";//+(love, " love");
    love += " you";//+(love, " you");
    
    cout<< "i love you";// <<(cout, "i love you");
    
  • 运算符分类

    数学运算符

    +  -  *  /  ++  --
    

    关系运算符

    ==  >=  <= !=
    

    特殊运算符

    [ ]
     =  赋值运算符
    ()仿函数
    << 输出运算符
    

数学运算符关系运算符例子

#include <stdio.h>
#include <unistd.h>


class myTimer{
public:
    myTimer(){
        hour = 0;
        min = 0;
        sec = 0;
    }
    ~myTimer(){

    }
    void addtimer(int sec = 1){
        this->sec = this->sec + sec;
    }
    void showtime(){
        printf("%02d:%02d:%02d\n",hour / 3600,min / 60,sec % 60);
    }
    //重载5
    bool operator == (myTimer &x){
        return (sec == x.sec && min == x.min && hour == x.hour) ? true : false;
    }

    //重载4 ++t
    myTimer operator++(){
        sec++;
        return *this;
    }

    /********所以一般写代码循环尽量用++i,因为i++会有拷贝过程******/
    //重载3  t++
    myTimer operator ++ (int){
        myTimer tmp = *this;//先记录自己
        sec++;//自己++
        return tmp;//返回之前的
    }
    //重载2
    myTimer operator + (int t){
        myTimer tmp;
        tmp.sec = sec + t;
        return tmp;
    }
    //重载1
    myTimer operator + (myTimer &x){
        myTimer tmp;
        tmp.sec = sec + x.sec;
        tmp.min = x.min;
        tmp.hour = x.hour;
        return tmp;
    }
private:
    int hour;
    int min;
    int sec;
};


int main(int argc, char const *argv[])
{
    myTimer t1;
    t1.addtimer(3);
    myTimer t2;
    t2.addtimer(6);
    myTimer t3;
    
    t3 = t2++;//重载3   先赋值再加
    printf("重载3 ");
    t3.showtime();

    t3 = ++t2;//重载4   先加再赋值
    printf("重载4 ");
    t3.showtime();

    printf("重载5 ");
    if(t2 == t3)//重载5
        printf("==\n");
    else
        printf("!=\n");
    
    printf("重载1 ");
    t3 = t1 + t2;//重载1
    t3.showtime();

    printf("重载2 ");
    t3 = t3 + 2;//重载2
    t3.showtime();
    
    printf("重载5 ");
    if(t2 == t3)//重载5
        printf("==\n");
    else
        printf("!=\n");
    
    return 0;
}

结果

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

杨CX

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值