C++加法运算符的重载(operator)

1.重载加法运算符

为什么要重载加法运算符?

因为C++提供的加法运算符只能满足基本数据类型间的加法,如果我想让俩个相同的类的对象进行加法的话会报错

image-20231218154406227

所以为了能让俩个相同类的对象进行加法,我们要把这个过程封装到一个函数里面,只不过要多加一个关键字operator而已,让编译器一下子就找到,这个是重载运算符的函数

作用:实现俩个自定义运算符相加

成员函数实现运算符重载

#include <iostream>
​
using namespace std;
​
class Box {
    int length;
    int width;
    int height;
public:
    Box() {
        length = 0;
        width = 0;
        height = 0;
    }
    Box(int length,int width,int height) {
        this->length = length;
        this->width = width;
        this->height = height;
    }
    Box(const Box& other) {
        length = other.length;
        width = other.width;
        height = other.height;
    }
    //成员函数重载加法运算符
    Box operator+(const Box& other) {
        Box p;
        p.length = this->length + other.length;
        p.width = this->width + other.width; 
        p.height = this->height + other.height;
        return p;
    }
};
int main() {
    Box a(1,2,3);
    Box b(2, 3, 4);
    Box c = a + b;//直接调用
    Box d;
    d = a.operator+(b);//调用重载运算符的函数
    return 0;
}

全局函数实现运算符的重载

#include <iostream>
​
using namespace std;
​
class Box {
    int length;
    int width;
    int height;
    friend Box operator+(const Box& other1, const Box& other2);
    friend Box operator+(const Box& other1, int val);
public:
    Box() {
        length = 0;
        width = 0;
        height = 0;
    }
    Box(int length,int width,int height) {
        this->length = length;
        this->width = width;
        this->height = height;
    }
    Box(const Box& other) {
        length = other.length;
        width = other.width;
        height = other.height;
    }
};
//全局函数重载加法运算符
Box operator+(const Box& other1,const Box& other2) {//不调用成员函数是无法访问私有的成员变量的,需要设置为友元,告诉编译器,我这个重载运算符的函数是你这个类的好朋友,都哥们,能f
    Box p;
    p.length = other1.length + other2.length;
    p.width = other1.width + other2.width;
    p.height = other1.height + other2.height;
    return p;
}
Box operator+(const Box& other1,int val) {
    Box p;
    p.length = other1.length + val;
    p.width = other1.width + val;
    p.height = other1.height + val;
    return p;
}
int main() {
    Box a(1,2,3);
    Box b(2, 3, 4);
    Box c = a + b;
    Box d;
    d=operator+(a,b);
    return 0;
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

使用低代码工具构建电商平台:简化开发流程,加速应用搭建

在数字化时代&#xff0c;电商平台成为了各类企业的重要组成部分。然而&#xff0c;传统的软件开发过程往往漫长而复杂&#xff0c;需要大量的编码和调试工作。随着低代码工具的出现&#xff0c;开发者可以通过简化的方式来搭建电商平台应用&#xff0c;从而更快速地满足业务需…

Netty Review - 优化Netty通信:如何应对粘包和拆包挑战_自定义长度分包编解码码器

文章目录 概述Pre概述Code自定义协议自定义解码器服务端的消息处理客户端启动类自定义编码器客户端业务处理Handler 测试 概述 Pre Netty Review - 借助SimpleTalkRoom初体验异步网络编程的魅力 Netty Review - 优化Netty通信&#xff1a;如何应对粘包和拆包挑战 中我们遗留了…

【Linux】多线程

目录​​​​​​​ Linux线程概念 1. 什么是线程 2. 重新定义线程和进程 3. 重讲地址空间 4. 线程的优点 5. 线程的缺点 6. 线程异常 7. 线程用途 Linux进程VS线程 1. 进程和线程 2. 进程的多个线程共享 3. 线程为什么进程要更加轻量化&#xff1f; Linux线程…

盲盒小程序搭建:开启互联网盲盒时代

盲盒目前是一个非常火爆的商业模式。随着科技的发展&#xff0c;盲盒市场也开始采用线上盲盒进行拓客&#xff0c;吸引盲盒爱好者。当下在互联网电商影响下&#xff0c;盲盒小程序逐渐受到了商家的青睐。 线上盲盒市场 盲盒消费主要是根据自身的未知性吸引消费者&#xff0c;消…

SpringBoot Elasticsearch全文搜索

文章目录 概念全文搜索相关技术Elasticsearch概念近实时索引类型文档分片(Shard)和副本(Replica) 下载启用SpringBoot整合引入依赖创建文档类创建资源库测试文件初始化数据创建控制器 问题参考 概念 全文搜索&#xff08;检索&#xff09;&#xff0c;工作原理&#xff1a;计算…

最优化理论与方法(2)---单纯形方法

文章目录 1. 线性规划1.1 基本介绍1.2 最优基本可行解 2. 表格形式单纯形方法2.1 基本知识引入2.2 求解步骤2.3 例题12.4 例题2 3. 单纯形法的进一步讨论3.1 无界解3.2 多个解 1. 线性规划 1.1 基本介绍 把握住两点&#xff1a;最小化和等号。  如果问题是最大化max&#xff…

新版iApp应用商店软件库源码 /纯UI源码 /开源高品质UI源码 /无需后台支持

源码介绍&#xff1a; 新版iApp应用商店软件库源码&#xff0c;它是纯UI源码、开源高品质UI源码 &#xff0c;而且它无需后台支持。UI界面简约。 这是应用商店软件库UI源码&#xff0c;原作者为他人开发的作品&#xff0c;经过同意后进行了开源。 这是一份完全原创的作品&…

gitee版本回退本地和仓库的执行步骤(后悔药,无副作用,按说明书使用)

目录 1.本地回退 1.打开项目文件夹 3.回退到指定版本 4.选择回退模式并确认 5.本地回退成功 2.回退仓库版本 1.在git上面找到项目的提交记录 2.找到提交错误的版本​编辑 3.双击新页面这个版本进去 点击操作再点击revert​编辑 4.确认回退 ​5.仓库回退成功 在使用…

【go-zero】 go-zero API 如何接入 Nacos 被 java 服务调用 | go集成java服务

一、场景 外层使用的是springcloud alibaba 这一套java的分布式架构 然后需要接入go-zero的api服务 这里我们将对api服务接入Nacos进行一个说明 二、实战 1、package 因为使用的是go-zero框架 这里我们会优先使用go-zero生态的包 github 包如下: github.com/nacos-group/naco…

MT3608 高效率1.2MHz2A升压转换器和MT3608L 高效率1.2MHz 2.5A升压转换器 MT3608L和MT3608的区别

MT3608是一个恒定的频率&#xff0c;6引脚SOT23电流模式升压转换器的小&#xff0c;低功耗应用的目的。该MT3608开关在1.2MHz&#xff0c;并允许微小的&#xff0c;低成本的电容器和电感器使用2毫米或更小的高度内部软启动浪涌电流的结果&#xff0c;并延长电池寿命。 …

细粒度语义对齐的视觉语言预训练

抽象 大规模的视觉语言预训练在广泛的下游任务中显示出令人印象深刻的进展。现有方法主要通过图像和文本的全局表示的相似性或对图像和文本特征的高级跨模态关注来模拟跨模态对齐。然而&#xff0c;他们未能明确学习视觉区域和文本短语之间的细粒度语义对齐&#xff0c;因为只有…

CSS基础小练习

<!DOCTYPE html> <html><head><meta charset"UTF-8"><title>圣诞节快乐</title><style>/*设置背景色*/body{background-image:linear-gradient(green 50%,red 50%);background-size:100% 30px;}/*让div在页面居中*/#text{…

算法——深度优先搜索(DFS)

DFS 思路&#xff1a; 从初始状态出发&#xff0c;下一步可能有多种状态&#xff1b;选其中一个状态深入&#xff0c;到达新的状态&#xff1b;直到无法继续深入&#xff0c;回退到前一步&#xff0c;转移到其他状态&#xff0c;然后再深入下去。最后&#xff0c;遍历完所有可以…

【12.20】转行小白历险记 登录+注册页

一、登录注册页面逻辑 写样式布局&#xff1a;垂直居中、编程式路由、调后端接口正则表达式验证用户输入的密码规则校验通过后&#xff0c;跳转页面js兜底校验调后端接口将token值存储到vuex中&#xff0c;实现持久化存储 vuex不是持久化存储的&#xff0c;如果需要持久化存储…

IDEA的facets和artifacts

在软件开发领域&#xff0c;IDEA 是指 JetBrains 公司的 IntelliJ IDEA&#xff0c;是一款流行的集成开发环境&#xff08;Integrated Development Environment&#xff09;。在 IntelliJ IDEA 中&#xff0c;"facets" 和 "artifacts" 是两个概念&#xff…

力扣面试经典题之二叉树

104. 二叉树的最大深度 简单 给定一个二叉树 root &#xff0c;返回其最大深度。 二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。 示例 1&#xff1a; 输入&#xff1a;root [3,9,20,null,null,15,7] 输出&#xff1a;3示例 2&#xff1a; 输入&#xf…

【LearnOpenGL基础入门——4】绘制几何图形

目录 一.元素缓冲对象 二.线框模式绘制(Wireframe Mode) 三.绘制两个彼此相连的三角形 一.元素缓冲对象 元素缓冲对象(Element Buffer Object&#xff0c;EBO)&#xff0c;也叫索引缓冲对象(Index Buffer Object&#xff0c;IBO)。假设我们不再绘制一个简单三角形而是绘制一…

51单片机项目设计:基于51单片机 无线防盗报警器设计

文章目录 项目背景一、项目功能二、材料选择三、接收设备原理图设计四、发送设备原理图设计四、PCB设计五、程序设计 哔哩哔哩视频链接&#xff1a; https://www.bilibili.com/video/BV1Wc411C7xH/?vd_sourcee5082ef80535e952b2a4301746491be0 实物链接&#xff1a;https://m…

机场信息集成系统系列介绍(7):机场航班信息显示系统FIDS

目录 一、简介 二、架构及相关功能 1、实时更新和显示航班信息 2、多屏显示与查询 3、提供登机口导航信息 4、发布机场公告 5、集成机场的其他延伸服务 6、支持多语言显示 7、监控与故障处理 8、数据分析与优化 9、与航空公司、地面代理的信息交互 10、安全保障与应…

大模型工具_awesome-chatgpt-prompts-zh

https://github.com/PlexPt/awesome-chatgpt-prompts-zh 1 功能 整体功能&#xff0c;想解决什么问题 ChatGPT 中文调教指南&#xff1a;提供一些常用的使用场景及对应的 Prompt 提示 当前解决了什么问题&#xff0c;哪些问题解决不了 针对想解决实际问题&#xff0c;但不知道…