c++ 学习 之 运算符重载
前言
运算符重载的概念:
对已有的运算符重新进行定义,赋予其另外一种功能,以适应不同的数据类型
加号运算符重载
作用:定义两个自定义的数据类型相加的运算
正常情况下,如果想要实现类中两个int 类型的相加,可以参考下面的代码
#define CRT_SECURE_NO_WARNINGS
#include<iostream>
using namespace std;class Person
{
public:Person(int x, int y){m_A = x;m_B = y;}// 修改为返回引用Person& add(const Person& p){m_A += p.m_A;m_B += p.m_B;return *this;}void print(){cout << "m_A: " << m_A << endl;cout << "m_B: " << m_B << endl;}
private:int m_A;int m_B;
};int main()
{Person A(1, 1);Person B(2, 2);// 使用赋值操作符初始化 cPerson c = A.add(B);c.print();return 0;
}
但是上面的代码的话A 和 c 共同使用同一个地址
看看下面的运算符重载
#define CRT_SECURE_NO_WARNINGS
#include<iostream>
using namespace std;class Person
{
public:void print(){cout << "m_A: " << m_A << endl;cout << "m_B: " << m_B << endl;}int m_A;int m_B;
};Person operator+(Person& p1, Person& p2)
{Person tmp;tmp.m_A = p1.m_A + p2.m_A;tmp.m_B = p1.m_B + p2.m_B;return tmp;}int main()
{Person A;A.m_A = 1;A.m_B = 1;Person B;B.m_A = 2;B.m_B = 2;// Person C = A + B; 这种方式和下面的是等价的Person C = operator+(A, B);C.print();return 0;
}
下面展示成员函数来实现运算符重载
#define CRT_SECURE_NO_WARNINGS
#include<iostream>
using namespace std;class Person
{
public:Person operator+(Person& p1){Person tmp;tmp.m_A = p1.m_A + this->m_A;tmp.m_B = p1.m_B + this->m_B;return tmp;}void print(){cout << "m_A: " << m_A << endl;cout << "m_B: " << m_B << endl;}int m_A;int m_B;
};int main()
{Person A;A.m_A = 1;A.m_B = 1;Person B;B.m_A = 2;B.m_B = 2;Person C = A + B; // 这种方式和下面的是等价的//Person C = A.operator+(B);C.print();return 0;
}
运算符重载 ,也可以实现 类 与 整形的结合
#define CRT_SECURE_NO_WARNINGS
#include<iostream>
using namespace std;class Person
{
public:void print(){cout << "m_A: " << m_A << endl;cout << "m_B: " << m_B << endl;}int m_A;int m_B;
};Person operator+(Person& p1, Person& p2)
{Person tmp;tmp.m_A = p1.m_A + p2.m_A;tmp.m_B = p1.m_B + p2.m_B;return tmp;}// 下面写一个函数重载
Person operator+(Person& p1, int num)
{Person tmp;tmp.m_A = p1.m_A + num;tmp.m_B = p1.m_B + num;return tmp;
}int main()
{Person A;A.m_A = 1;A.m_B = 1;Person B;B.m_A = 2;B.m_B = 2;// Person C = A + B; 这种方式和下面的是等价的//Person C = operator+(A, B);//C.print();Person D = A + 10;D.print();return 0;
}
相关文章:
c++ 学习 之 运算符重载
前言 运算符重载的概念: 对已有的运算符重新进行定义,赋予其另外一种功能,以适应不同的数据类型 加号运算符重载 作用:定义两个自定义的数据类型相加的运算 正常情况下,如果想要实现类中两个int 类型的相加…...
各种数据库表名长度限制整理
因为工作原因,需要整理下系统支持的数据库的表名长度限制,现发出来,以节省大家的整理时间,如有不对的敬请斧正! 数据库类型长度ORACLE 30GreenPlum40KINGBASEES63PostgreSql63Gbase63瀚高63OSCAR64MYSQL 64HBASE64Mar…...
Go 里的超时控制
前言 日常开发中我们大概率会遇到超时控制的场景,比如一个批量耗时任务、网络请求等;一个良好的超时控制可以有效的避免一些问题(比如 goroutine 泄露、资源不释放等)。 Timer 在 go 中实现超时控制的方法非常简单,…...
一文彻底搞清楚Spark Schema
前言 Spark Schema定义了DataFrame的结构,可以通过对DataFrame对象调用printSchema()方法来获得该结构。Spark SQL提供了StructType和StructField类以编程方式指定架构。 默认情况下,Spark从数据中推断schema,但有时我们可能需要定义自己的schema(列名和数据类型),尤其…...
Nginx多出口IP解决代理端口数量限制,CentOS安装Nginx并开启https2.0
Nginx多出口IP解决代理端口数量限制,CentOS安装Nginx并开启https2.0。 配置文件如下: http {...upstream test {server www.test.com;}server {listen 80 default_server;server_name _;location / {proxy_pass http://test;proxy_bind $split_ip...
SpringBoot项目(百度AI整合)——如何在Springboot中使用语音文件识别 ffmpeg的安装和使用
前言 前言:在实际使用中,经常要参考官方的案例,但有时候因为工具的不一样,比如idea 和 eclipse,普通项目和spring项目等的差别;还有时候因为水平有限,难以在散布于官方的各个文档读懂ÿ…...
探索古彝文AI识别技术:助力中国传统文化的传承与发扬
目录 ⭐️ 写在前面 ⭐️ 一、什么是古彝文 1.1 古彝文介绍 1.2 古彝文与其他古文字示例 1.3 古彝文的重要性 ⭐️二、AI识别技术的挑战与前景 2.1 挑战 2.2 前景 ⭐️三、合合信息AI识别技术 3.1 智能文字识别技术👍👍 3.2 古文识别应用 ⭐…...
mysql面试题2:说一说MySQL的架构设计?一条 MySQL 语句执行的步骤?
该文章专注于面试,面试只要回答关键点即可,不需要对框架有非常深入的回答,如果你想应付面试,是足够了,抓住关键点 面试官:说一说MySQL的架构设计? MySQL的架构设计主要包括以下几个组件: 连接器(Connector):负责与客户端建立连接,并进行身份验证和授权。 查询缓存…...
UPnP协议和SSDP协议
1、两种协议 UPnP协议:Universal Plug and Play,广义的即插即用。UPnP协议的目的:当有新设备连接上网络,网络上的其他设备能够马上知道有新设备加入,然后这些设备能互相宣传和发现彼此,以便能使用和控制彼…...
notepad++配置python2环境
(1)python2版本下载:Index of /ftp/python/2.7.8/https://www.python.org/ftp/python/2.7.8/ (2) 配置notepad环境 1.打开Notepad,点击“插件”-“插件管理器”,在“可用”选项卡中,…...
在ThinkAdmin中弹出层关闭后回调
在thinkadmin里面,窗口的的一些方法全部都集成在admin.js里面,在之前的文章中也有出现过类似的问题,就是对动态加载的数据进行统计,那时候写也是想记录下,现在自己都不记得是哪个站用的了,所以在这里也把这…...
vue3 和vue2 的比较
文章目录 生命周期多根节点Composition API组合式APIOptions API与composition API对比优化逻辑组织优化逻辑复用 异步组件(Suspense)Suspense组件 响应式原理性能体积优化编译优化diff算法优化静态提升数据劫持(响应式系统)优化 生命周期 vue3在组合AP…...
算法通过村第八关-树(深度优先)黄金笔记|寻找祖先
文章目录 前言最近公共祖先问题总结 前言 提示:生活就是一场有很多规则,却没有裁判的比赛。 --约瑟夫布罗茨基《悲伤与理智》 最近公共祖先问题 参考题目地址:236. 二叉树的最近公共祖先 - 力扣(LeetCode) 如果将搜索…...
postgresql|数据库|数据库测试工具pgbench之使用
前言: 数据库是项目中的重要组件,也是一个基础的重要组件,其地位说是第一我想应该是没有什么太多问题的。 那么,数据库的设计这些方面是不用多说的,关键的第一步,主要是涉及数据库的部署方式,…...
代码随想录Day51 | 309.最佳买卖股票时机含冷冻期
309. 买卖股票的最佳时机含冷冻期 class Solution { public:int maxProfit(vector<int>& prices) {int n prices.size();if (n 0) return 0;vector<vector<int>> dp(n, vector<int>(4, 0));dp[0][0] - prices[0]; // 持股票for (int i 1; i &l…...
libopenssl 实现私钥加密公钥解密
在需要验证可信来源时,需要用到签名验签。因此,需要使用私钥加密,公钥解密,取得被加密的信息。这就会使用到私钥加密,公钥解密的场景了。 参考: https://github.com/openssl/openssl/issues/20493 https:/…...
代码随想录 Day - 51|#309 最佳买卖股票时机含冷冻期|#714 买卖股票的最佳时机含手续费
清单 ● 309.最佳买卖股票时机含冷冻期 ● 714.买卖股票的最佳时机含手续费 LeetCode #309 最佳买卖股票时机含冷冻期 1. 题目 给定一个整数数组,其中第 i 个元素代表了第 i 天的股票价格 。 设计一个算法计算出最大利润。在满足以下约束条件下,你可…...
.net 使用IL生成代理类实现AOP对比Java Spring Boot的AOP
首先,我们需要定义一个接口,代表我们要代理的目标对象的功能: // 日志记录器接口 public interface ILogger {/// <summary>/// 记录日志/// </summary>/// <param name"message">日志消息</param>void L…...
美容店预约小程序搭建流程
随着科技的不断发展,小程序已经成为了人们生活中不可或缺的一部分。对于美容店来说,搭建一个预约小程序不仅可以提高工作效率,还可以增加客户数量、提高服务质量。那么,如何搭建一个美容店预约小程序呢?本文将为你详细…...
ppt 作图 如何生成eps格式
需求 ppt中画的图,按照eps格式导出。 环境 软件: ppt, Gsview(用来将ps格式转成eps), Adobe 操作系统: win11 思路 直接在ppt里选择adobe打印机,将图片以文件形式打印到ps格式的文件中,再由gsview转化成eps。 建议在本身就…...
横空出世!IDEA最强MyBatis插件来了,功能很全!
最近更新了IDEA 2026.1这个版本,发现之前使用的MyBaitsX这个插件没有兼容,启动就报错!于是就改用了MyBatisCodeHelper-Pro这个插件,体验了一把,提示很全,还有方便的MyBaits日志转SQL面板,这里分…...
最后30天,PMP备考需要一次“认知切换”
背完所有知识点的人不一定能考过,但做对这三类切换的人一定能。大家好,我又来了。距离2026年6月14日PMP考试还有大约一个月的时间。如果看了我以前的文章,你已经知道这次考试很特殊——6月这场是现行考纲的绝版场次,之后考纲将从人…...
别再复制粘贴了!手把手教你为51单片机LCD12864制作自定义中文字库(Keil C51环境)
从零构建51单片机LCD12864自定义中文字库的完整实战指南 在嵌入式显示领域,标准字库往往无法满足个性化需求。当我们需要在LCD12864屏幕上显示特殊符号、品牌LOGO或艺术字体时,自定义字库技术就成为关键突破点。本文将彻底解析从字模提取到ROM优化的全流…...
不删除属性的情况下简化对象属性的方法探讨
是否还有其他方法可以简化从对象中删除特定属性的操作。舍友提出了一个对象属性简化的问题,询问在不删除属性的情况下,如何简化从对象中删除特定属性的操作。02解决方案最初,我曾考虑过不直接删除属性,而是仅保留业务所需的那些。…...
深入解析Trust Layer:声明式信任管理在微服务架构中的工程实践
1. 项目概述与核心价值最近在开源社区里,一个名为openclawunboxed/trust-layer的项目引起了我的注意。乍一看这个标题,可能会觉得有些抽象——“信任层”?这听起来像是一个偏学术或理论性的概念。但当我深入其代码仓库和设计文档后࿰…...
LLM长文本处理实战:模块化分割策略与向量化预处理指南
1. 项目概述:一个为LLM打造的文本处理中心如果你和我一样,经常和大型语言模型打交道,无论是用它来总结文档、分析代码,还是处理客服对话,那你肯定遇到过这个痛点:喂给模型的文本太长了怎么办?模…...
如何永久保存微信聊天记录:WeChatMsg完整指南与数据安全终极方案
如何永久保存微信聊天记录:WeChatMsg完整指南与数据安全终极方案 【免费下载链接】WeChatMsg 提取微信聊天记录,将其导出成HTML、Word、CSV文档永久保存,对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com/GitHub_Trendin…...
如何实现Airbyte动态服务发现:从基础到实践的完整指南
如何实现Airbyte动态服务发现:从基础到实践的完整指南 【免费下载链接】airbyte Open-source data movement for ELT pipelines and AI agents — from APIs, databases & files to warehouses, lakes, and AI applications. Both self-hosted and Cloud. 项目…...
AITranslate:本地化AI翻译工作流框架,构建可编程翻译管道
1. 项目概述与核心价值最近在折腾一个挺有意思的项目,叫AITranslate。这名字一看就知道,它想用AI来干翻译的活儿。但说实话,现在市面上翻译工具多如牛毛,从老牌的谷歌翻译、DeepL,到各种大厂出的AI翻译插件,…...
微软创新者窘境:从J的离开看大公司如何留住颠覆性人才
1. 从“J”的离去看微软的“创新者窘境”2010年5月,当微软宣布其娱乐与设备事业部(E&D)的重组,以及J Allard和Robbie Bach两位核心人物的离开时,科技圈的反应是复杂的。表面上看,这是一次常规的高层人事…...
