Day 4 C++

news2024/9/21 22:28:11

算术运算符重载

种类: + - * / %

#include <iostream>

using namespace std;

class Cacu
{
    friend const Cacu operator+(const Cacu &l,const Cacu &r);
   friend const Cacu operator-(const Cacu &l,const Cacu &r);
   friend const Cacu operator*(const Cacu &l,const Cacu &r);
   friend const Cacu operator/(const Cacu &l,const Cacu &r);
//   friend const Cacu operator%(const Cacu &l,const Cacu &r);
private:
    int a;
    int b;
public:
    Cacu(){}
    Cacu(int a,int b):a(a),b(b)
    {}
    //成员函数实现+号运算重载
//    const Cacu operator+(const Cacu &r) const
//    {
//        Cacu temp;
//        temp.a=this->a+r.a;
//        temp.b=this->b+r.b;
//        return temp;
//    }
    //成员函数实现-号运算符重载
//    const Cacu operator-(const Cacu &r) const
//    {
//        Cacu temp;
//        temp.a=this->a-r.a;
//        temp.b=this->b-r.b;
//        return temp;
//    }
    //成员函数实现✖号运算符重载
//    const Cacu operator*(const Cacu &r) const
//    {
//        Cacu temp;
//        temp.a=a*r.a;
//        temp.b=b*r.b;
//        return temp;
//     }
    //成员函数实现/号运算符重载
//    const Cacu operator/(const Cacu &r) const
//    {
//        Cacu temp;
//        temp.a=a/r.a;
//        temp.b=b/r.b;
//        return temp;
//    }
    //成员函数实现%号运算符重载
    const Cacu operator%(const Cacu &r) const
    {
        Cacu temp;
        temp.a=a%r.a;
        temp.b=b%r.b;
        return temp;
    }

    void show()
    {
        cout << "a= " << a << endl;
        cout << "b= " << b << endl;
    }
};

//全局变量函数实现+运算符重载
const Cacu operator+(const Cacu &l,const Cacu &r)
{
    Cacu temp;
    temp.a=l.a+r.a;
    temp.b=l.b+r.b;
    return temp;
}
//全局变量函数实现-运算符重载
const Cacu operator-(const Cacu &l,const Cacu &r)
{
    Cacu temp;
    temp.a=l.a-r.a;
    temp.b=l.b-r.b;
    return temp;
}
//全局变量函数实现*运算符重载
const Cacu operator*(const Cacu &l,const Cacu &r)
{
    Cacu temp;
    temp.a=l.a*r.a;
    temp.b=l.b*r.b;
    return temp;
}
//全局变量函数实现/号运算符重载
const Cacu operator/(const Cacu &l,const Cacu &r)
{
    Cacu temp;
    temp.a=l.a/r.a;
    temp.b=l.b/r.b;
    return temp;
}
//全局变量函数实现%号运算符重载
//const Cacu operator%(const Cacu &l,const Cacu &r)
//{
//    Cacu temp;
//    temp.a=l.a%r.a;
//    temp.b=l.b%l.b;
//    return temp;
//}
int main()
{
    Cacu s1(100,100);
    Cacu s2(10,10);
    Cacu s3=s1+s2;
    s3=s1-s2;
    s3=s1*s2;
    s3=s1/s2;
    s3=s1%s2;
    s3.show();
    return 0;
}

2 关系运算符重载

种类: > 、< == !=

#include <iostream>

using namespace std;
class Rela
{
    friend bool operator>(const Rela &l,const Rela &r);
    friend bool operator<(const Rela &l,const Rela &r);
    friend bool operator==(const Rela &l,const Rela &r);
    friend bool operator!=(const Rela &l,const Rela &r);
private:
    int a;
    int b;
public:
    Rela(){}
    Rela(int a,int b):a(a),b(b)
    {}
    //成员函数实现>号关系运算符重载
//    bool operator>(const Rela &r) const
//    {
//        if(a>r.a && b>r.b)
//        {
//            return true;
//          }
//        else
//        {
//            return false;

//        }
//    }
    //成员函数实现<号关系运算重载
//    bool operator<(const Rela &r) const
//    {
//        if(a<r.a&&b<r.b)
//        {
//            return true;
//        }
//        else
//        {
//            return false;
//        }
//    }

     //成员变量实现=号关系运算符重载
//    bool operator==(const Rela &r) const
//    {
//        if(a==r.a && b==r.b )
//        {
//            return true;
//        }
//        else
//        {
//            return false;
//        }
//    }
    //成员变量实现!=号关系运算符
//    bool operator!=(const Rela &r) const
//    {
//        if(a==r.a && b==r.b)
//        {
//            return false;
//        }
//        else
//        {
//            return true;
//        }
//    }
};

//全局变量函数实现>号关系运算符重载
bool operator>(const Rela &l,const Rela &r)
{
    if(l.a>r.a && l.b>r.b)
    {
        return true;
    }
    else
    {
        return false;
    }
}
//全局变量<实现关系运算符重载
bool operator<(const Rela &l,const Rela &r)
{
    if(l.a<r.a &&l.b<r.b)
    {
        return true;
           }
    else
    {
        return false;
    }
}
//全局变量实现==号关系运算符重载
bool operator==(const Rela &l,const Rela &r)
{
    if(l.a==r.a && l.b==l.b)
    {
        return true;
    }
    else
    {
        return false;
    }

}
//全局变量实现!=号关系运算符重载
bool operator!=(const Rela &l,const Rela &r)
{
    if(l.a!=r.a || l.b!=l.b)
    {
        return true;
    }
    else
    {
        return false;
    }

}
int main()
{
    Rela r1(1,7);
    Rela r2(1,9);
    if(r1>r2)
    {
        cout << "r1>r2" << endl;
    }
    else if(r1<r2)
    {
        cout << "r1<r2" << endl;
    }
    else if(r1==r2)
    {
        cout << "r1==r2" << endl;
    }
    else if(r1!=r2)
    {
        cout << "r1!=r2" << endl;
    }
    return 0;
}

3 赋值运算符重载

种类: = 、+= 、 -= 、*= 、/= 、%=

#include <iostream>

using namespace std;
//实现赋值运算符重载
class Assi
{
   friend Assi operator+=(Assi &l,const Assi &r);
   friend Assi operator-=(Assi &l,const Assi &r);
   friend Assi operator*=(Assi &l,const Assi &r);
   friend Assi operator/=(Assi &l,const Assi &r);
   friend Assi operator%=(Assi &l,const Assi &r);
 //  friend Assi operator=(Assi &l,const Assi &r);
private:
    int a;
    int b;
public:
    Assi(){}
    Assi(int a,int b):a(a),b(b)
    {
    }
//    //成员实现赋值+=运算符的重载
//    Assi operator+=(const Assi &r)
//    {
//        a+=r.a;
//        b+=r.b;
//      return *this;
//    }
//    //成员实现赋值-=运算符的重载
//    Assi operator-=(const Assi &r)
//    {
//        a-=r.a;
//        b-=r.b;
//      return *this;
//    }
//    //成员实现赋值=运算符的重载
//    Assi operator=(const Assi &r)
//    {
//        a=r.a;
//        b=r.b;
//      return *this;
//    }
//     //成员实现赋值*=运算符的重载
//    Assi operator*=(const Assi &r)
//    {
//        a*=r.a;
//        b*=r.b;
//      return *this;
//    }
//    //成员实现赋值/=运算符的重载
//    Assi operator/=(const Assi &r)
//    {
//        a/=r.a;
//        b/=r.b;
//      return *this;
//    }
//    //成员实现赋值%=运算符的重载
//    Assi operator%=(const Assi &r)
//    {
//        a%=r.a;
//        b%=r.b;
//      return *this;
//    }
    void show()
    {
        cout << "a= " << a << endl;
        cout << "b= " << b << endl;
    }
};
//全局函数实现赋值+=运算符的重载
Assi operator+=(Assi &l,const Assi &r)
{
    l.a+=r.a;
    l.b+=r.b;
  return l;
}
//全局函数实现赋值+=运算符的重载
Assi operator-=(Assi &l,const Assi &r)
{
    l.a-=r.a;
    l.b-=r.b;
  return l;
}

//全局函数实现赋值*=运算符的重载
Assi operator*=(Assi &l,const Assi &r)
{
    l.a*=r.a;
    l.b*=r.b;
  return l;
}
//全局函数实现赋值/=运算符的重载
Assi operator/=(Assi &l,const Assi &r)
{
    l.a/=r.a;
    l.b/=r.b;
  return l;
}

//全局函数实现赋值%=运算符的重载
Assi operator%=(Assi &l,const Assi &r)
{
    l.a%=r.a;
    l.b%=r.b;
  return l;
}


//成员实现赋值=运算符的重载
//Assi operator=( Assi &l, const Assi &r)
//{
//    l.a=r.a;
//    l.b=r.b;
//  return l;
//}


int main()
{
    Assi w1(10,12);
    Assi w2(8,8);
    w1+=w2;
    w1-=w2;
    w1=w2;
    w1*=w2;
    w1/=w2;
    w1%=w2;
    w1.show();
    return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1080450.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

这可是全网最全的华为认证零基础学习路线整理,最新版分享

网络工程师愈发重要的新时代&#xff0c;华为认证已经成为学习网工的重中之重。 全球企业数字化转型呈现从慢速试点到今天的倍增创新&#xff0c;技术应用从单一孤立的到各类技术的融合&#xff0c;网络作为企业数字化运营的基石&#xff0c;迎来联接和数据的爆炸式增长&#x…

归并排序 nO(lgn)

大家好&#xff0c;我是蓝胖子&#xff0c;我一直相信编程是一门实践性的技术&#xff0c;其中算法也不例外&#xff0c;初学者可能往往对它可望而不可及&#xff0c;觉得很难&#xff0c;学了又忘&#xff0c;忘其实是由于没有真正搞懂算法的应用场景&#xff0c;所以我准备出…

【竞赛题目】木块(C语言详解)

" 木块 " 是【第二届全国高校计算机技能竞赛】里的一道竞赛题目&#xff0c;博主觉得很新颖想推荐给大家&#xff1b; 题目描述 为了提高词汇量&#xff0c;小理得到了一套四块木块&#xff0c;其中每块都是一个立方体&#xff0c;六面各写着一个字母。他正在通过将…

SQL利用Case When Then多条件判断

CASE WHEN 条件1 THEN 结果1 WHEN 条件2 THEN 结果2 WHEN 条件3 THEN 结果3 WHEN 条件4 THEN 结果4 ......... WHEN 条件N THEN 结果N ELSE 结果X END Case具有两种格式。简单Case函数和Case搜索函数。 --简单Case函数 CASE sex WHEN 1 THEN…

MyBatis-Plus为简化开发而生

简介 MyBatis-Plus 简称 MP是一个 MyBatis 的增强工具&#xff0c;在 MyBatis 的基础上只做增强不做改变&#xff0c;为简化开发、提高效率而生。 他们的愿景是成为 MyBatis 最好的搭档&#xff0c;就像魂斗罗中的 1P、2P&#xff0c;基友搭配&#xff0c;效率翻倍。 特性 无…

JWT 使用入门(一)配置与示例

文章目录 1、用途✨2、实现流程&#x1f440;3、JWT介绍3.1、构成3.1.1、header3.1.2、载荷3.1.3、签证 4、java实现4.1、引入依赖4.2、测试案例 官网链接&#xff1a;https://github.com/jwtk/jjwt 1、用途✨ JWT主要作用分为以下两种&#xff1a; 1&#xff1a;作为在前后端…

css修改滚动条

系统默认的滚动条可能不是很美观&#xff0c;有时候我们想要自己进行样式的修改&#xff0c;就可以用到下面的方法 设置滚动条的属性为overflow&#xff0c;取值是x轴和y轴 如果想单独设置某个轴&#xff0c;可以使用overflow-x,overflow-y <!DOCTYPE html> <html …

测试老鸟整理,Pytest自动化测试框架的一些关键点,一文贯通...

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 Pytest自动化框架&…

Python自动查重之原理、方法与实践详解

什么是自动查重&#xff1f; 自动查重是指使用计算机程序来比较两个或多个文件的内容&#xff0c;判断它们之间是否存在相似或相同的部分&#xff0c;从而检测出抄袭或重复的情况。自动查重可以用于学术论文、代码、文本等各种类型的文件&#xff0c;帮助提高原创性和质量。 为…

kepler.gl 笔记:Layer

Point S2Layer Icon Line Cluster Polygon 一个路径型的GeoJSON图层可以显示诸如行程路线或等值线的数据。轮廓的颜色可以使用数值字段进行设置。 一个多边形型的GeoJSON图层本质上是一种区域填充图层&#xff0c;最适合用于呈现地理围栏。填充颜色或高度可以使用数值字…

HarmonyOS/OpenHarmony原生应用-ArkTS万能卡片组件Toggle

组件提供勾选框样式、状态按钮样式及开关样式。该组件从API Version 8开始支持。 仅当ToggleType为Button时可包含子组件。 一、接口 Toggle(options: { type: ToggleType, isOn?: boolean }) 从API version 9开始&#xff0c;该接口支持在ArkTS卡片中使用。 参数: Toggle…

Mac M1安装MongoDB6、后台运行

MongoDB&#xff0c;版本6.02 记录两种使用MongoDB的方法&#xff0c;安装包和docker docker mongo&#xff1a;Mac M1运行、连接 Docker MongoDB7。导出、恢复数据库 一、安装包&#xff0c;以mac M1为例 1、下载对应平台的安装包 M1选择ARM版本 https://www.mongodb.com/t…

SecureCRT 特点介绍 SecureCRT的安装和使用

SecureCRT 是一款支持SSH&#xff08;SSH1和SSH2&#xff09;的终端仿真程序&#xff0c;简单地说是Windows下登录UNIX或Linux服务器主机的软件&#xff0c;优点是可以一次创建多个 Tab Page&#xff0c;连接多台远程主机。 这里使用的是Mac版本的不过不影响&#xff0c;在Win…

RK3568平台开发系列讲解(驱动篇)RK3568 PWM详解

🚀返回专栏总目录 文章目录 一、什么是PWM二、RK3568 PWM2.1、PWM 通道与引脚2.2、PWM 简介2.3、PWM 设备节点沉淀、分享、成长,让自己和他人都能有所收获!😄 📢 PWM 是很常用到功能,我们可以通过 PWM 来控制电机速度,也可以使用 PWM 来控制 LCD 的背光亮度。 一、什…

每日一题 2512. 奖励最顶尖的 K 名学生(中等,模拟,排序)

思路&#xff1a; 对于每一个学生的评价&#xff0c;使用 split 方法提取评价中的每一个字符&#xff0c;然后逐个判断是否是正面或者负面词汇来计算分数对id按照要求进行排序。为了加快字符的正负判断速度&#xff0c;先将 positive 和 negative 两个列表转化为 set 这样就可…

智能文件管理助手,轻松实现按数量平均分类文件,高效整理新文件夹!

在我们的电脑或移动设备中&#xff0c;文件管理是我们日常工作和生活中不可或缺的一部分。有时候&#xff0c;我们可能需要将一个文件夹中的大量文件按照数量平均分配到多个新的文件夹中&#xff0c;以便更好地进行整理和管理。现在&#xff0c;我们为您提供了一款智能文件管理…

JSAPI实现H5页面微信支付

进入官网文档&#xff1a;> 微信支付官网文档 根据官网文档能够很详细的需要做的事 接下来&#xff0c;采用的是JSAPI的方式在小程序嵌入H5页面中实现微信支付&#xff0c;直接拉起支付页面 一&#xff1a;需要在微信公众号平台和微信支付商家平台获取的配置的关键参数如下…

MidJourney | AI绘画也有艺术

免费绘画&#xff0c;体验更多AI可关&注公&众&号&#xff1a;AI研究工厂

ICPC 2019-2020 North-Western Russia Regional Contest

A (codeforces.com) 这题在移动不被挡板挡住以及不超过边界的情况下&#xff0c;每次走的越多那么次数就越少 只要两个每次都走b-a步&#xff08;已经是不被挡板挡住走的最多了&#xff09;&#xff0c;就不用考虑被挡板挡住的情况&#xff0c;只用单独考虑了&#xff0c;如果…

算法通过村第十三关-术数|黄金笔记|数论问题

文章目录 前言辗转相除法素数和合数埃氏筛选法丑数问题总结 前言 提示&#xff1a;难过的人伤心的人、在生活里面对困境的人、即将抑郁的人、从外面很难看出异样&#xff0c;人的心里却可能有一些裂痕。只是人不会再表面裂开。 --栾颖新《那个苹果也很好》 数论是一个很重要的学…