C++入门基础知识147—【关于C++ 一元运算符重载】

成长路上不孤单😊😊😊😊😊😊

【14后😊///C++爱好者😊///持续分享所学😊///如有需要欢迎收藏转发///😊】

今日分享关于C++  一元运算符重载的相关内容!

关于【C++一元运算符重载】

目录:

  • 一、什么是一元运算符重载
  • 二、一元运算符重载的例子
  • 三、一元运算符重载的实现方式
  • 四、一元运算符重载的应用场景
  • 五、一元运算符和二元运算符的区别
  • 六、一元运算符重载实例1
  • 七、一元运算符重载实例2

一、什么是一元运算符重载

一元运算符重载‌是指在C++中,通过定义一个类的成员函数或友元函数,使得一个运算符只与一个操作数进行运算。这种重载方式使得运算符可以用于自定义类型,从而赋予其新的功能。

二、一元运算符重载的例子

  1. 负号(-)重载‌:可以通过成员函数或友元函数来实现。例如,定义一个坐标类Coordinate,可以通过重载负号运算符来实现坐标的取反操作。在成员函数重载中,不需要传递任何参数,因为隐含的this指针代表了一个操作数‌1。
  2. 自增(++)和自减(-)重载‌:这些运算符也可以通过成员函数来实现。例如,对于Student类,可以重载前置自增和自减运算符,使得Student对象的属性值增加或减少。在实现时,需要返回对象的引用,以便在表达式中可以继续使用该对象‌2。

三、一元运算符重载的实现方式

  1. 成员函数重载‌:在类内部定义一个成员函数,使用operator关键字后跟运算符符号。由于是一元运算符,不需要传递额外的参数,但隐含的this指针代表了一个操作数。
  2. 友元函数重载‌:在类外部定义一个友元函数,使用operator关键字后跟运算符符号。这种方式允许该函数访问类的私有和保护成员‌12。

四、一元运算符重载的应用场景

一元运算符重载常用于自定义类型,使得代码更加直观和易于理解。例如,在数学计算、物理模拟、游戏开发等领域中,自定义类型常常需要使用到各种运算符,通过重载这些运算符,可以使代码更加简洁和高效‌34。

通过一元运算符重载,C++程序员可以赋予运算符新的功能,使其适用于自定义类型,从而增强代码的可读性和灵活性。

五、一元运算符和二元运算符的区别

操作数数量
‌一元运算符和二元运算符的主要区别在于所需的操作数数量。‌一元运算符只需要一个操作数,而二元运算符需要两个操作数。‌

一元运算符的定义和例子
一元运算符只需要一个操作数。例如,在C语言中,++a和--a都是一元运算符,分别表示自增和自减操作。

二元运算符的定义和例子
二元运算符需要两个操作数。例如,加法(+)、减法(-)、乘法(*)、除法(/)等都是二元运算符。

运算等级和运算的本质
运算等级是指不同运算的优先级和结合性。数学上的运算本质上是集合之间的映射关系,通过已知量的组合获得新的量。

六、一元运算符重载实例1

在C++中,一元运算符重载通常是通过定义一个带有一个参数的非成员函数来实现的。如果运算符是必须作为成员函数实现的(如赋值 = 或取址 ->),则需要将其定义为成员函数。

以下是一个简单的例子,展示了如何重载一元减号运算符 - 用于自定义数据类型 MyNumber

在这个例子中,我们定义了一个名为 MyNumber 的简单类,并重载了一元减号运算符 -,返回一个新的 MyNumber 对象,其 value 成员是原对象 value 的相反数。当我们对 MyNumber 对象使用一元减号时,会调用这个重载的运算符函数。

七、一元运算符重载实例2

一元运算符只对一个操作数进行操作,接下来是另一个一元运算符的实例:

  • 递增运算符( ++ )和递减运算符( --
  • 一元减运算符,即负号( - )
  • 逻辑非运算符( ! )

一元运算符通常出现在它们所操作的对象的左边,比如 !obj、-obj 和 ++obj,但有时它们也可以作为后缀,比如 obj++ 或 obj--。

下面的实例演示了如何重载一元减运算符( - )。

当上面的代码被编译和执行时,它会产生下列结果:

希望上面的实例能够帮您更好地理解一元运算符重载的概念,我们也可以尝试重载逻辑非运算符( ! )。

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

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

相关文章

2022年蓝桥杯JavaB组 省赛 题目解析(含AC_Code)

目录 前言(必读)第一题:星期计算 (简单)问题描述思路AC代码总结 第二题 山 (简单)问题描述题目分析山形数定义解题思路代码实现解析代码详解回文和“山形”判断函数主函数 AC代码复杂度分析 总结…

NLP论文速读(微软出品)|使用GPT-4进行指令微调(Instruction Tuning with GPT-4)

论文速读|Instruction Tuning with GPT-4 论文信息: 简介: 这篇论文试图解决的问题是如何通过指令调优(instruction-tuning)提升大型语言模型(LLMs)在执行新任务时的零样本(zero-shot&#xff0…

C++20 概念与约束(3)—— 约束的进阶用法

《C20 概念与约束(1)—— SFINAE》 《C20 概念与约束(2)—— 初识概念与约束》 ●《C20 概念与约束(3)—— 约束的进阶用法》 1、再谈约束主句与从句 上一篇文章中提到过约束可以无限嵌套。末尾也提到不…

c#使用COM接口设置excel单元格宽高匹配图片,如何计算?

c#使用COM接口设置excel单元格宽高如何换算 在实际工作中,经常需要在excel中插入图片。并设置单元格与图片对齐。但是excel单元格的宽度和高度使用不同的单位。单元格的宽度以字符宽度为单位,而高度以点为单位。如果按照实际值来设置,例如设…

【activiti工作流源码集成】springboot+activiti+mysql+vue+redis工作流审批流集成整合业务绑定表单流程图会签驳回

工作流集成实际项目案例,demo提供 源码获取方式:本文末个人名片直接获取。 前言 activiti工作流引擎项目,企业erp、oa、hr、crm等企事业办公系统轻松落地,请假审批demo从流程绘制到审批结束实例。 一、项目形式 springbootvue…

CKA认证 | Day2 K8s内部监控与日志

第三章 Kubernetes监控与日志 1、查看集群资源状态 在 Kubernetes 集群中,查看集群资源状态和组件状态是非常重要的操作。以下是一些常用的命令和解释,帮助你更好地管理和监控 Kubernetes 集群。 1.1 查看master组件状态 Kubernetes 的 Master 组件包…

推荐一款好用的postman替代工具2024

Apifox 是国内团队自主研发的 API 文档、API 调试、API Mock、API 自动化测试一体化协作平台,是非常好的一款 postman 替代工具。 它通过一套系统、一份数据,解决多个系统之间的数据同步问题。只要定义好接口文档,接口调试、数据 Mock、接口…

gdb调试redis。sudo

1.先启动redis-server和一个redis-cli。 2.ps -aux|grep reids查看redis相关进程。 3.开始以管理员模式附加进程调试sudo gdb -p 2968.注意这里不能不加sudo,因为Redis 可能以 root 用户启动,普通用户无法附加到该进程。否则就会出现可能下列情形&#…

YUM 的使用

YUM 是一个用于 Fedora 和 Red Hat 以及 CentOS 操作系统的前端软件包管理器,它可以自动处理依赖关系并一次性安装所有必需的软件包。 镜像站点选择 1. 备份原有的镜像源配置文件 系统默认的 yum 镜像源配置文件存储在 /etc/yum.repos.d/ 目录下,可以…

力扣 LeetCode 242. 有效的字母异位词(Day3:哈希表)

解题思路: 哈希表三种数据结构的选择 1. 数组:适用于数据量小的情况 2. set:适用于数据量大的情况 3. map:适用于key-value 什么时候用哈希表? 给你一个元素,判断该元素在这个集合里是否出现过 本题使…

【MYSQL】锁详解(全局锁、表级锁、行级锁)【快速理解】

目录 一、全局锁 二、表级锁 1.表锁 2.元数据锁 3.意向锁 三、行级锁 1. 行锁 2.间隙锁 3.临建锁 锁是处理并发情况下,对数据的一致性的关键因素,也是并发情况下对效率影响非常大的。 1、全局锁:锁定表中所有数据。 2、表级锁:…

蓝桥杯每日真题 - 第11天

题目:(合并数列) 题目描述(14届 C&C B组D题) 解题思路: 题意理解:给定两个数组,目标是通过若干次合并操作使两个数组相同。每次合并操作可以将数组中相邻的两个数相加&#xff…

contos7.9 部署3节点 hadoop3.4 集群 非高可用

contos7.9 部署3节点 hadoop3.4 集群 非高可用 contos7.9 部署3节点 hadoop3.4 集群 非高可用环境信息服务器角色分配服务器配置服务器配置初始化 init_server.sh配置主机名映射所有节点配置 hosts文件 配置免密登录 hadoop 安装环境配置下载安装包下载 jdk1.8hadoop3.4 分发安…

人工智能:重塑医疗、企业与生活的未来知识管理——以HelpLook为例

一、医疗行业:AI引领的医疗革新 随着人工智能(AI)技术的持续飞跃,我们正身处一场跨行业的深刻变革之中。在医疗健康的广阔舞台上,人工智能技术正扮演着日益重要的角色。它不仅能够辅助医生进行病例的精准诊断&#xf…

第四十五章 Vue之Vuex模块化创建(module)

目录 一、引言 二、模块化拆分创建方式 三、模块化拆分完整代码 3.1. index.js 3.2. module1.js 3.3. module2.js 3.4. module3.js 3.5. main.js 3.6. App.vue 3.7. Son1.vue 3.8. Son2.vue 四、访问模块module的state ​五、访问模块中的getters ​六、mutati…

论文笔记 SuDORMRF:EFFICIENT NETWORKS FOR UNIVERSAL AUDIO SOURCE SEPARATION

SUDORMRF: EFFICIENT NETWORKS FOR UNIVERSAL AUDIO SOURCE SEPARATION 人的精神寄托可以是音乐,可以是书籍,可以是运动,可以是工作,可以是山川湖海,唯独不可以是人。 Depthwise Separable Convolution 深度分离卷积&a…

69页可编辑PPT | 大数据基础知识培训课件

课件全面介绍了大数据的基础知识,包括大数据的定义、特征、发展演进、产业链、关键技术以及市场规模等多个方面,旨在为观众提供一个关于大数据领域的综合性概览。 大数据基本概念 广义的定义(哲学) :大数据,是指物理世界到数字世界的映射和提…

仓储管理系统-综合管理(源码+文档+部署+讲解)

本文将深入解析“仓储管理系统-综合管理”的项目,探究其架构、功能以及技术栈,并分享获取完整源码的途径。 系统概述 仓储管理系统-综合管理是一个全面的仓库管理解决方案,旨在通过集成多种功能模块来优化仓库操作和管理流程。该系统提供了…

MYSQL中的两种转义操作

在 MySQL 中,转义字符用于处理特殊字符,以防止语法错误或 SQL 注入攻击,而单双引号都是需要重点注意的字符 可以用转义符\ 和 两个连续的引号 来起到转义引号的作用 转义符转义: 这是users表中的数据 如果查询admin 或者 admin" 用户,可以用转义符\ 两个连…

引领企业未来数字基础架构浪潮,中国铁塔探索超大规模分布式算力

分布式算力被中国信通院列入“2024政企数智化转型十大关键词”。中国信通院指出,随着新一代通信规模建设和边缘计算应用的持续部署,越来越多的应用运行和数据生产处理在边端侧开展,这对于传统算力基础设施的部署、调度提出了新要求&#xff0…