【C++】运算符重载 ⑥ ( 一元运算符重载 | 后置运算符重载 | 前置运算符重载 与 后置运算符重载 的区别 | 后置运算符重载添加 int 占位参数 )

news2024/11/19 20:27:55

文章目录

  • 一、后置运算符重载
    • 1、前置运算符重载 与 后置运算符重载 的区别
    • 2、后置运算符重载添加 int 占位参数

2 2 2 篇博客

  • 【C++】运算符重载 ④ ( 一元运算符重载 | 使用 全局函数 实现 前置 ++ 自增运算符重载 | 使用 全局函数 实现 前置 - - 自减运算符重载 )
  • 【C++】运算符重载 ⑤ ( 一元运算符重载 | 使用 成员函数 实现 前置 ++ 自增运算符重载 | 使用 成员函数 实现 前置 - - 自减运算符重载 )

讲解了 前置运算符 的 重载 , 前置运算符就是 ++Object--Object , 一元运算符 在 对象的 前面 ;

本篇博客开始讲解 后置运算符 的重载 ;





一、后置运算符重载




1、前置运算符重载 与 后置运算符重载 的区别


后置运算符 是 Object++Object-- , 一元运算符在对象的后面 ;

前置运算符重载 与 后置运算符重载 的区别是 返回值类型 不同 ,

  • 前置运算符重载 , 返回值是 对象引用 ;
// 使用 全局函数 实现 前置 ++ 自增运算符重载
// 重载 前置 ++ 运算符
// 实现 1 个 Student 对象 自增运算
// 由于 参数中的 Student& s 中的属性发生了变化 
// 返回时仍需要返回 Student& s 参数本身
Student& operator++(Student& s)
{
	s.age++;
	s.height++;
	return s;
};
  • 后置运算符重载 , 返回值是 匿名对象 ;
// 使用 全局函数 实现 后置 ++ 自增运算符重载
// 重载 后置 ++ 运算符
// 实现 1 个 Student 对象 自增运算
// 先使用 参数中的 Student& s 对象 , 再自增
// 因此 Student& s 对象是需要自增的 
// 但是使用的对象 就是 返回的对象, 必须是没有自增的对象
// 这里使用 ret 保存 s 对象值 , 然后返回该 ret 值 
// s 对象中的值自增
// 返回的是一个新 Student 对象
Student operator++(Student& s)
{
	Student ret = s;
	s.age++;
	s.height++;
	return ret;
};

由于 重载函数 只看 函数名 和 参数列表 , 不看返回值 , 因此

  • Student operator++(Student& s)
  • Student& operator++(Student& s)

2 2 2 个函数被看做相同的函数 ,

在这里插入图片描述
上述重载函数定义 , 在编译时报错 ,

error C2556: “Student operator ++(Student &): 重载函数与“Student &operator ++(Student &)”只是在返回类型上不同

在这里插入图片描述


2、后置运算符重载添加 int 占位参数


因此 , 后置运算符重载 , 通常需要一个 占位参数 int ;

这个参数没有实际的意义 , 只是为了和 前置运算符重载 进行区别 ;

// 使用 全局函数 实现 后置 ++ 自增运算符重载
// 重载 后置 ++ 运算符
// 实现 1 个 Student 对象 自增运算
// 先使用 参数中的 Student& s 对象 , 再自增
// 因此 Student& s 对象是需要自增的 
// 但是使用的对象 就是 返回的对象, 必须是没有自增的对象
// 这里使用 ret 保存 s 对象值 , 然后返回该 ret 值 
// s 对象中的值自增
// 返回的是一个新 Student 对象
Student operator++(Student& s, int)
{
	Student ret = s;
	s.age++;
	s.height++;
	return ret;
};

占位参数 参考 【C++】函数参数扩展 ② ( 占位参数 | 占位参数规则 - 必须为占位参数传入实参 | 默认参数与占位参数结合使用 ) 博客 ;

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

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

相关文章

算法题:盛最多水的容器

这个题目乍一看就是双指针,没想到官方解答也是双指针,我在官方的基础上优化了一下下,左右两边各一个指针,每次移动短的那一头的时候,不是移动一格,而是找到比短的那一头要长一点的,再进行比较。…

文心一言 VS 讯飞星火 VS chatgpt (106)-- 算法导论10.1 4题

四、用go语言,重写 ENQUEUE 和 DEQUEUE 的代码,使之能处理队列的下溢和上溢。 文心一言: 在 Go 语言中,我们可以使用切片来实现队列。下面是如何实现 ENQUEUE 和 DEQUEUE 操作,同时处理队列的下溢和上溢的情况&#…

坦克世界WOT知识图谱三部曲之爬虫篇

文章目录 关于坦克世界1. 爬虫任务2. 获取坦克列表3. 获取坦克具体信息结束语 关于坦克世界 《坦克世界》(World of Tanks, WOT)是我在本科期间玩过的一款战争网游,由Wargaming公司研发。2010年10月30日在俄罗斯首发,2011年4月12日在北美和欧洲推出&…

目标检测算法改进系列之Backbone替换为RepViT

RepViT简介 轻量级模型研究一直是计算机视觉任务中的一个焦点,其目标是在降低计算成本的同时达到优秀的性能。轻量级模型与资源受限的移动设备尤其相关,使得视觉模型的边缘部署成为可能。在过去十年中,研究人员主要关注轻量级卷积神经网络&a…

整体网络架构p22

1. 两次卷积,一次池化。得到一个三维特征图,然后让三维的特征图,三个值进行相乘拉成特征向量,把得到的结果需要靠全连接层。 带参数计算才算一层 算conv的个数FC全连接层就得到卷积神经网络的层数 FC:全连接层 2. 3.reset网络&a…

连接查询-多表联合查

一、连接查询的分类 根据表的连接方式,连接查询分为内连接、外连接和全连接。 内连接: 等值连接非等值连接自连接外连接: 左外连接(左连接)右外连接(右连接) 全连接 二、笛卡尔积 交叉连接也…

番外--Task1:

""" 重置root管理员密码添加yum源测试软件包安装成功 """ step1: 在shell界面输入重启命令; step2: 重启过程中出现此界面,快速按键盘‘e’, 进入系统内核程序; step3: 在系统内核程序内&#xff0c…

【MATLAB源码-第42期】基于matlab的人民币面额识别系统(GUI)。

操作环境: MATLAB 2022a 1、算法描述 基于 MATLAB 的人民币面额识别系统设计可以分为以下步骤: 1. 数据收集与预处理 数据收集: 收集不同面额的人民币照片,如 1 元、5 元、10 元、20 元、50 元和 100 元。确保在不同环境、不…

【算法学习】-【双指针】-【盛水最多的容器】

LeetCode原题链接:盛水最多的容器 下面是题目描述: 给定一个长度为 n 的整数数组 height 。有 n 条垂线,第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 。 找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。…

Net相关的各类开源项目

Net相关的各类开源项目 WPFHandyControlLive-ChartsWPFDeveloperswpf-uidesignStylet WebScheduleMasterYiShaAdminBlog.CoreNebula.AdminNewLife.CubeOpenAuth UnityuGUIUnityCsReferenceEpitomeMyUnityFrameWorkKSFrameworkTowerDefense-GameFramework-Demo 通用ClientServer…

目标检测算法改进系列之Backbone替换为InceptionNeXt

InceptionNeXt 受 Vision Transformer 长距离依赖关系建模能力的启发,最近一些视觉模型开始上大 Kernel 的 Depth-Wise 卷积,比如一篇出色的工作 ConvNeXt。虽然这种 Depth-Wise 的算子只消耗少量的 FLOPs,但由于高昂的内存访问成本 (memory…

机器学习必修课 - 编码分类变量 encoding categorical variables

1. 数据预处理和数据集分割 import pandas as pd from sklearn.model_selection import train_test_split导入所需的Python库 !git clone https://github.com/JeffereyWu/Housing-prices-data.git下载数据集 # Read the data X pd.read_csv(/content/Housing-prices-data/t…

CTFshow Web入门 文件上传

目录 web151 web152 web153 web154 web155 web156 web157 web158、web159 web160 web161 web162 web163 web164 web165 web166 web167 web168 web169 web170 web151 1. 写马改后缀为png上传,抓包修改文件信息 回显路径,蚁剑连接 2. …

仿函数的学习

仿函数 也叫 函数对象 仿函数是什么东西? 当你第一眼看到下面的代码的时候,你会觉得它是一个函数的调用: bool result less(a, b);但是我如果告诉你,less 是一个我自定义的一个类的对象呢? class Less { public:bo…

不标准的 json 格式的字符串如何转为标准的(json字符串属性名不带双引号如何转

背景 不规范的 json 字符串例如 属性名不带双引号 {name:"abc"}属性名带单引号而不是双引号 {name:"abc"}属性值该用双引号的时候用了单引号 {"name":abc}还有一种情况就是以上情况的混合 所谓规范的json字串就是属性名要用双引号&#xf…

13种改进粒子群优化算法 matlab2022 运行结果和耗时对比

前言 阅读粒子群优化算法的文章,发现代码不仅要付费而且还没有运行结果,需要自己手动写代码运行,这里提供下我的运行结果。包含参数结果和耗时对比。 https://www.bilibili.com/read/cv11905136/?spm_id_from333.999.0.0 % 定义适应度函数 …

Visual Studio Code 安裝

一、Visual Studio Code 安裝 VS Code 下载地址:https://code.visualstudio.com/ windows系统的快速下载地址:https://vscode.cdn.azure.cn/stable/441438abd1ac652551dbe4d408dfcec8a499b8bf/VSCodeUserSetup-x64-1.75.1.exe macOS系统的快速下载地址…

最短路径专题6 最短路径-多路径

题目: 样例: 输入 4 5 0 2 0 1 2 0 2 5 0 3 1 1 2 1 3 2 2 输出 2 0->1->2 0->3->2 思路: 根据题意,最短路模板还是少不了的, 我们要添加的是, 记录各个结点有多少个上一个结点走动得来的…

即时通讯软件

通信协议 发送消息可以是个struct 客户端分两个线程:读取服务器,给服务器发(否则会导致阻塞) read和write的第二个参数类型是:void *buf——————不仅仅是一个字符串,也可以是一个结构体等等&#xf…

【进程管理】初识进程

一.何为进程 教材一般会给出这样的答案: 运行起来的程序 或者 内存中的程序 这样说太抽象了,那我问程序和进程有什么区别呢?诶?这我知道,书上说,动态的叫进程,静态的叫程序。那么静态和动态又是什么意思…