• C++_pen_重载(1)


    普通运算符重载

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

      string love = "i";
      
      love += " love";//+(love, " love");
      love += " you";//+(love, " you");
      
      cout<< "i love you";// <<(cout, "i love you");
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
    • 运算符分类

      数学运算符

      +  -  *  /  ++  --
      
      • 1

      关系运算符

      ==  >=  <= !=
      
      • 1

      特殊运算符

      [ ]
       =  赋值运算符
      ()仿函数
      << 输出运算符
      
      • 1
      • 2
      • 3
      • 4

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

    #include 
    #include 
    
    
    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;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
    • 91
    • 92
    • 93
    • 94
    • 95
    • 96
    • 97

    结果

    在这里插入图片描述

  • 相关阅读:
    JDBC快速使用
    来自北大算法课的Leetcode题解:85. 最大矩形
    架构师技能图谱
    Linux删除3天前的归档日志文件
    Pycharm2022 pycharm64.exe.Vmoptions
    红队专题-Cobalt strike4.5二次开发
    一文让你彻底搞懂AQS(通俗易懂的AQS)
    Linux找茬
    汽配erp管理系统目前有哪些公司提供了解决方案?
    第二章:25+ Python 数据操作教程(第二十二节如何从 R 调用或运行 python)持续更新
  • 原文地址:https://blog.csdn.net/m0_58193842/article/details/133563631