【无标题】

cpp 复制代码
#include <iostream>
using namespace std;
class Per
{
    //算术运算符
    friend const Per operator+(const Per &k1,const Per &k2);
    friend const Per operator-(const Per &k1,const Per &k2);
    friend const Per operator*(const Per &k1,const Per &k2);
    friend const Per operator/(const Per &k1,const Per &k2);
    //关系运算符
    friend bool operator==(const Per &k1,const Per &k2);
    friend bool operator>(const Per &k1,const Per &k2);
    friend bool operator<(const Per &k1,const Per &k2);
    friend bool operator!=(const Per &k1,const Per &k2);
    //赋值运算符
    friend Per &operator+=(Per &k1,const Per &k2);
    friend Per &operator-=(Per &k1,const Per &k2);
    friend Per &operator*=(Per &k1,const Per &k2);
    friend Per &operator/=(Per &k1,const Per &k2);

private:
     int a;
     int b;
public:

    Per(int a=0,int b=0):a(a),b(b)
    {};
    void show()
    {
        cout << "a=" << a << endl << "b=" << b << endl;
    }
    //算术运算符
//    const Per operator+( const Per &k) const
//    {
//        Per temp;
//        temp.a = a + k.a;
//        temp.b = b + k.b;
//        return temp;
//    }
//    const Per operator-( const Per &k) const
//    {
//        Per temp;
//        temp.a = a - k.a;
//        temp.b = b - k.b;
//        return temp;
//    }
//    const Per operator*( const Per &k) const
//    {
//        Per temp;
//        temp.a = a * k.a;
//        temp.b = b * k.b;
//        return temp;
//    }
//    const Per operator/( const Per &k) const
//    {
//        Per temp;
//        temp.a = a / k.a;
//        temp.b = b / k.b;
//        return temp;
//    }
//    const Per operator%( const Per &k) const
//    {
//        Per temp;
//        temp.a = a % k.a;
//        temp.b = b % k.b;
//        return temp;
//    }
    //关系运算符
//    bool operator==(const Per &k) const
//    {
//        if(a == k.a && b == k.b)
//        {
//            return true;
//        }else
//            return false;
//    }
//    bool operator>(const Per &k) const
    //    {
    //        if(a > k.a && b > k.b){
    //            return true;
    //        }else
    //            return false;
    //    }
    //    bool operator<(const Per &k) const
    //    {
    //        if(a < k.a && b < k.b){
    //            return true;
    //        }else
    //            return false;
    //    }
    //    bool operator!=(const Per &k) const
    //    {
    //        if(a != k.a && b != k.b){
    //            return true;
    //        }else
    //            return false;
    //    }
        //赋值运算符
    //    Per &operator+=(const Per &k2)
    //    {
    //        a += k2.a;
    //        b += k2.b;
    //        return *this;
    //    }
    //    Per &operator-=(const Per &k2)
    //    {
    //        a -= k2.a;
    //        b -= k2.b;
    //        return *this;
    //    }
    //    Per &operator=(const Per &k2)
    //    {
    //      if(this!=&k2){
    //            a = k2.a;
    //            b = k2.b;
    //      }
    //        return *this;
    //    }
    //    Per &operator*=(const Per &k2)
    //    {
    //        a *= k2.a;
    //        b *= k2.b;
    //        return *this;
    //    }
    //    Per &operator/=(const Per &k2)
    //    {
    //        a /= k2.a;
    //        b /= k2.b;
    //        return *this;
    //    }
    };

    //算术运算符
    const Per operator+(const Per &k1,const Per &k2)
    {
        Per temp;
        temp.a = k1.a + k2.a;
        temp.b = k1.b + k2.b;
        return temp;
    }
    const Per operator-(const Per &k1,const Per &k2)
    {
        Per temp;
        temp.a = k1.a - k2.a;
        temp.b = k1.b - k2.b;
        return temp;
    }
    const Per operator*(const Per &k1,const Per &k2)
    {
        Per temp;
        temp.a = k1.a * k2.a;
        temp.b = k1.b * k2.b;
        return temp;
    }
    const Per operator/(const Per &k1,const Per &k2)
    {
        Per temp;
        temp.a = k1.a / k2.a;
        temp.b = k1.b / k2.b;
        return temp;
    }
    //关系运算符
    bool operator==(const Per &k1,const Per &k2)
    {
           if(k1.a == k2.a && k1.b == k2.b)
           {
               return true;
           }else
               return false;
    }
    bool operator>(const Per &k1,const Per &k2)
    {
           if(k1.a >k2.a && k1.b > k2.b)
           {
               return true;
           }else
               return false;
    }
    bool operator<(const Per &k1,const Per &k2)
    {
           if(k1.a < k2.a && k1.b < k2.b)
           {
               return true;
           }else
               return false;
    }
    bool operator!=(const Per &k1,const Per &k2)
    {
           if(k1.a != k2.a && k1.b != k2.b)
           {
               return true;
           }else
               return false;
    }
    //赋值运算符
    Per &operator+=(Per &k1,const Per &k2)
    {
        k1.a += k2.a;
        k1.b += k2.b;
        return k1;
    }
    Per &operator-=(Per &k1,const Per &k2)
    {
        k1.a -= k2.a;
        k1.b -= k2.b;
        return k1;
    }
    Per &operator*=(Per &k1,const Per &k2)
    {
        k1.a *= k2.a;
        k1.b *= k2.b;
        return k1;
    }
    Per &operator/=(Per &k1,const Per &k2)
    {
        k1.a /= k2.a;
        k1.b /= k2.b;
        return k1;
    }
    int main()
    {
        Per k(10,10);
        Per kk(10,10);
        Per kkk = k + kk;
        kkk.show();
        if(kkk == kk){
          cout << "左右操作数想等" << endl;
        }else if(kkk > kk){
            cout << "左操作数大于右操作数" << endl;
        }else if(kkk < kk){
            cout << "左操作数小于右操作数" << endl;
        }else{
            cout << "不知道" << endl;
        }
        kkk+=kk;
        kkk.show();
        kkk-=kk;
        kkk.show();
        return 0;
    }
复制代码
相关推荐
AI科技星3 分钟前
算法联盟·全域数学公理体系下黑洞标量毛发与LVK引力波O4全维理论、求导、证明、计算、验证、分析
人工智能·线性代数·算法·架构·学习方法·量子计算
谙弆悕博士3 分钟前
【附C语言源码】C语言 栈结构 实现及其扩展操作
c语言·开发语言·数据结构·算法·链表·指针·
YuanDaima20485 分钟前
图论基础原理与题目说明
数据结构·人工智能·python·算法·图论·手撕代码
AI人工智能+电脑小能手5 分钟前
【大白话说Java面试题 第53题】【JVM篇】第13题:JVM采用什么算法判断一个对象是否需要被回收?
java·jvm·算法·面试
小赵不会秃头9 分钟前
数据结构Day 06:线性结构、库操作及 Makefile 完整学习笔记
java·linux·数据结构·算法·面试
Shan120519 分钟前
在C++中尝试封装为函数
开发语言·c++·算法
郝学胜-神的一滴31 分钟前
干货版《算法导论》04:渐近复杂度与序列接口实战
java·开发语言·数据结构·c++·python·算法
zzzsde31 分钟前
【Linux】信号处理(3)信号处理&&valatile关键字
linux·运维·服务器·开发语言·算法
洛水水44 分钟前
【力扣100题】47.最长递增子序列
算法·leetcode·职场和发展
环流_1 小时前
Redis zinterstore
算法