运算符重载----赋值运算符重载

news2024/11/24 8:34:26

运算符重载

本质是函数调用,内置类型编译器直接比,自定义就去找对应类内重载的函数
如果定义在类外,需要访问私有的成员函数,只能将成员函数权限变为Public或者友元(非必须不用)
,所以一般重载函数都写在类内

底层看到都是一样的函数调用在这里插入图片描述

定义
函数名字为:关键字operator后面接需要重载的运算符符号。
函数原型:返回值类型 operator操作符(参数列表)
注意:
不能通过连接其他符号来创建新的操作符:比如operator@
重载操作符必须有一个类类型参数
用于内置类型的运算符,其含义不能改变,例如:内置的整型+,不 能改变其含义
作为类成员函数重载时,其形参看起来比操作数数目少1,因为成员函数的第一个参数为隐藏的this

.在这里插入图片描述

操作符是几个操作数,重载函数就有几个参数
一般除了三目运算符都是2个

标题解决访问私有成员函数

显示写出this指针,但其实不需要写,编译器自动
在这里插入图片描述

bool operator<(const Date& x2)
	{
		if (_year < x2._year)
		{
			return true;
		}
		else if (_year == x2._year && _month < x2._month)
		{
			return true;
		}
		else if (_year == x2._year && _month == x2._month && _day < x2._day)
		{
			return true;
		}
		return false;
	}

设置在类内,就解决了
在这里插入图片描述
底层同样都是调用类内重载函数,实际上用肯定用d1 < d2
在这里插入图片描述

如果设置在类外,也不是必须设置到类内,只是类内比较方便
在这里插入图片描述

赋值运算符重载

在这里插入图片描述
首先搞清楚 d1 = d2; 并不是拷贝构造,而是去调用运算符重载函数

其次就是 d1 = d2 = d3这种连等的情况

i = 1; 返回值是1—为赋值后的结果

>此写法不支持连续赋值,没有返回值
void operator=(const Date& d)
{
	_year = d._year;
	_month = d._month;
	_day = d._day;
}

返回值的结果应该是如图所示
在这里插入图片描述
正确写法
在这里插入图片描述
精华的点就是 return *this 为什么能返回,是*this因为出了函数作用域还在,在main函数里是个实例化对象

还有一种情况是 d1 = d1 ;
自己给自己赋值,可以允许,也可以不允许

Date& operator=(const Date& d)
{
	if (this != &d)
	{
	_year = d._year;
	_month = d._month;
	_day = d._day;
	}
	return *this;
}

还要注意默认生成的会和类外自己写的冲突,所以只能定义在类内
在这里插入图片描述

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

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

相关文章

Linux程序设计之字节序转换

1.在网络通信中&#xff0c;数据的存储方式十分重要&#xff0c;因为它影响到数据的准确性。如今&#xff0c;电脑和网络上数据的存储方式有两种&#xff1a;大端模式和小端模式。大端模式&#xff1a;数据的高位存储在内存的低位&#xff0c;数据的低位存储在内存的高位。小端…

【keil5开发ARM工程时使用STLink调试的技巧分享】

ARM工程开发小技巧系列文章 St link V2驱动安装方法 文章目录 ARM工程开发小技巧系列文章前言一、准备工作1. 硬件连接2. 安装stlink的驱动3. Keil 5配置 二、调试示例1.进入调试状态2. 调试演示2.1 复位&#xff0c;使程序复位到初始位置2.2 单步调试2.3 逐步调试2.4 跳出调…

Quartus中的逻辑锁定与增量编译

逻辑锁定功能可以将FPGA中的代码模块在固定区域实现&#xff0c;优化时序性能&#xff0c;提升设计可靠性。增量编译功能&#xff0c;可以使设计更快速时序收敛&#xff0c;加快编译速度。 LogicLock 使用Chip Planner创建逻辑锁定区域 打开Chip Planner&#xff0c;点击Vie…

Kubernetes Controller原理讲解

Controller原理 在 K8s 中&#xff0c;用户通过声明式 API 定义资源的“预期状态”&#xff0c;Controller 则负责监视资源的实际状态&#xff0c;当资源的实际状态和“预期状态”不一致时&#xff0c;Controller 则对系统进行必要的更改&#xff0c;以确保两者一致&#xff0…

人群计数数据集汇总和详细介绍,全网最全,crowd counting datasets

Crowd Counting数据集汇总 视频监控video surveillance https://github.com/gjy3035/Awesome-Crowd-Counting/blob/master/src/Datasets.md进展 | 密集人群分布检测与计数 :https://www.sohu.com/a/338406719_823210 Free-view 2022_Pedestrian Attribute Recognition htt…

vue+element Ui 树型组件tree懒加载+搜索框远程请求数据为平铺类型

本人之前一直是耕耘后台研发&#xff0c;最近接了个小需求需要接触到vue&#xff0c;记录一下我遇到的一些前端解决时间长的问题 需求&#xff1a; 1&#xff1a;每次动态请求接口获取下一节点数据 2&#xff1a;接口返回的数据是list&#xff0c;不带子节点&#xff0c;用pid来…

Scala中使用Typesafe Config 库

Typesafe Config 库 在 Scala 中加载配置文件有很多种方法&#xff0c;其中一种常用的方法是使用 Typesafe Config 库。该库提供了一种简单易用的方式来读取和解析配置文件。 以下是在启动 main 方法后加载配置文件的示例代码&#xff1a; 引入 Typesafe Config 库 import c…

【MySQL】函数

一、概述 MySQL中提供了大量函数来简化用户对数据库的操作&#xff0c;比如字符串的处理、日期的运算、数值的运算等等。使用函数可以大大提高SELECT语句操作数据库的能力&#xff0c;同时也给数据的转换和处理提供了方便。 &#xff08;在sql中使用函数&#xff09;函数只是对…

shadowsocks服务端和客户端搭建

shadowsocks服务端和客户端搭建 一、服务端搭建 买个境外云服务器&#xff0c;搭建shadowsocks服务端。 需要python3环境。 1.下载shadowsocks服务端python包&#xff0c;并启动。下载地址 # 1.下载 [rootiZrj982e4r5hkd053zsnmqZ ~]# wget https://pypi.python.org/packa…

2023隐私计算与人工智能峰会成功举办!数据宝演讲实录(上篇)分享

2023年4月8日&#xff0c;2023隐私计算与人工智能峰会在深圳举办&#xff0c;大会由华东江苏大数据交易中心和热点资讯联合主办&#xff0c;会上&#xff0c;数据宝董事詹臻女士做开幕式致辞。 数据宝与开放群岛&#xff08;Open Islands&#xff09;进行战略签约&#xff0c;…

LoRA: 大语言模型个性化的最佳实践

出品人&#xff1a; Towhee 技术团队 大型语言模型&#xff08;LLM&#xff09;在今年获得了极大的关注。在以往&#xff0c;预训练微调&#xff08;finetuning&#xff09;成为了让模型适配于特定数据的最佳范式。然而随着大型模型的出现&#xff0c;这种完全微调&#xff08;…

【运动规划算法项目实战】如何实现机器人多目标点导航

文章目录 前言一、 什么是actionlib?二、实现流程三、总结前言 在ROS机器人应用中,实现机器人多目标点导航是非常常见的需求。本文将介绍如何使用ROS和actionlib来实现机器人的多目标点导航,目标点信息将被记录在YAML文件中。 我们可以通过使用MoveBaseAction来实现机器人…

高并发场景下JVM调优实践

一、背景 2021年2月&#xff0c;收到反馈&#xff0c;视频APP某核心接口高峰期响应慢&#xff0c;影响用户体验。 通过监控发现&#xff0c;接口响应慢主要是P99耗时高引起的&#xff0c;怀疑与该服务的GC有关&#xff0c;该服务典型的一个实例GC表现如下图&#xff1a; 可以…

【WinForm】定时器的使用方法除了定时还有延迟执行可用

在使用VS开发工具创建的WinForm项目中&#xff0c;有一个定时器组件&#xff0c;拖出来放上&#xff0c;它只是一个定时处理的作用&#xff0c;不会显示在窗体中。 开发中如果需要定时处理&#xff0c;就使用Timer组件即可&#xff0c; 在它的属性事件一栏里&#xff0c;有一…

offer选择:创业公司 VS 大厂外包

面试拿到两个offer&#xff0c;一个是规模只有几十人的初创小公司&#xff0c;另一个是大厂外包岗位。都是功能测试&#xff0c;两者薪水待遇也差不多&#xff0c;该如何选择?更有利于之后的职业发展...... 这是一个比较典型的问题&#xff0c;对于要转行的同学或者是刚入行没…

【Call for papers】2023年CCF人工智能会议信息汇总(持续更新)

本博文是根据2022年CCF会议推荐的人工智能领域相关会议目录撰写。 注&#xff1a; 由于一些会议的投稿时间还没公开&#xff0c;因此根据往年投稿时间在表格中使用 ~ 符号表示大概的投稿时间&#xff08;一旦会议日期更新&#xff0c;我们也将同步更新博文。若更新不及时请小伙…

C++常用23种设计模式总结(一)------单例模式

什么是单例模式 单例模式是一种设计模式&#xff0c;它保证一个类只有一个实例&#xff0c;并提供一个全局访问点来访问该实例。这个模式通常用于控制资源的访问&#xff0c;例如数据库连接、线程池等。单例模式通过限制实例化操作并提供访问方法&#xff0c;确保在整个应用程序…

【Unity3D小功能】Unity3D中实现模型的旋转、缩放效果(控制摄像机)

推荐阅读 CSDN主页GitHub开源地址Unity3D插件分享简书地址我的个人博客 大家好&#xff0c;我是佛系工程师☆恬静的小魔龙☆&#xff0c;不定时更新Unity开发技巧&#xff0c;觉得有用记得一键三连哦。 一、前言 其实之前已经写了关于如何控制模型的旋转、移动、缩放效果&…

Android开发:使用sqlite数据库实现记单词APP

一、功能与要求 实现功能&#xff1a;设计与开发记单词系统的四个界面&#xff0c;分别是用户登录、用户注册、单词操作以及忘记密码。 指标要求&#xff1a;通过用户登录、用户注册、单词操作、忘记密码掌握界面设计的基础&#xff0c;其中包括界面布局、常用控件、事件处理等…

NPN三极管放大原理

NPN三极管放大 这是华为的芯片,还有其他人的芯片 无论这些芯片再复杂,它们都是由这种材料制成的 ​ 硅晶体 我们把他放大,单个硅原子最外层带有四个电子, 在纯硅当中,这些电子会两两形成共价键,此时周围形成非常稳定的八电子结构 我们接上电池, 电池无法吸引其中的电子离开,也…