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

news2024/12/23 14:16:32

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

相关文章

【测试框架篇】单元测试框架pytest(1):环境安装和配置

一、pytest简介 Pytest是Python的一种单元测试框架,与Python自带的unittest测试框架类似,但是比 unittest框架使用起来更简洁,效率更高。 二、pytest特点 Pytest是一个非常成熟的Python测试框架,主要特点有以下几点: 非常容易…

【CANOE】【学习】【DecodeString】字节转为中文字符输出

系列文章目录 文章目录 系列文章目录前言一、DecodeString 转为中文字节输出二、代码举例1.代码Demo2.DecodeString 函数说明函数语法:参数说明:返回值:使用示例:示例代码: 说明: 前言 有时候使用的时候&a…

边缘计算在智能交通系统中的应用

💓 博客主页:瑕疵的CSDN主页 📝 Gitee主页:瑕疵的gitee主页 ⏩ 文章专栏:《热点资讯》 边缘计算在智能交通系统中的应用 边缘计算在智能交通系统中的应用 边缘计算在智能交通系统中的应用 引言 边缘计算概述 定义与原…

CC1链学习记录

🌸 前言 上篇文章学习记录了URLDNS链,接下来学习一下Common-Colections利用链。 🌸 相关介绍 Common-Colections是Apache软件基金会的项目,对Java标准的Collections API提供了很好的补充,在其基础上对常用的数据结构…

边缘计算在智能物流中的应用

💓 博客主页:瑕疵的CSDN主页 📝 Gitee主页:瑕疵的gitee主页 ⏩ 文章专栏:《热点资讯》 边缘计算在智能物流中的应用 边缘计算在智能物流中的应用 边缘计算在智能物流中的应用 引言 边缘计算概述 定义与原理 发展历程 …

《多模稳控应急通讯设备技术规范》出炉,应急通讯有章可循!

近日,由深圳市遨游通讯设备有限公司参与的《多模稳控应急通讯设备技术规范》在经历多项严格的审核程序后,由中国中小商会企业协会正式发布实施。该标准详细规定了多模稳控应急通讯设备的术语和定义、产品型号、技术要求、试验方法、检验规则、标志、包装…

生成任意3D和4D场景!GenXD:通用3D-4D联合生成框架 | 新加坡国立微软

文章链接: https://arxiv.org/pdf/2411.02319 项目链接:https://gen-x-d.github.io/ 有视频 亮点直击 设计了一个数据整理流程,从视频中获取包含可移动物体的高质量4D数据,并为30,000个视频标注了相机姿态。这个大规模数据集称为CamVid-30K&…

全面解读:低代码开发平台的必备要素——系统策划篇

在传统开发过程中,系统策划起着举足轻重的作用,它宛如一位幕后的总指挥,把控着整个软件开发项目的走向。而随着技术的不断进步,低代码开发平台逐渐崭露头角,它以快速开发、降低技术门槛等优势吸引了众多企业和开发者的…

如何通过工单池与抢单机制提升企业服务效率与客户满意度?

在许多企业的售后服务或维修管理中,工单管理常常是一个瓶颈。工单处理不及时、任务分配不合理,或者客户的需求没有被准确跟踪,都可能影响到服务质量,进而影响客户满意度。随着企业规模扩大,如何高效管理工单池、合理调…

智慧电厂新纪元:基于亿信ABI的电厂环保指挥管控平台实践

​在当今全球能源转型与环境保护的双重驱动下,电力行业正加速向智能化、绿色化迈进。本案例聚焦于某电厂的智能化转型实践,通过引入先进的烟气达标监测技术与碳资产管理平台,不仅实现了对电厂排放的精准控制,还极大提升了碳数据的…

【C++练习】计算并输出1到10的所有整数的阶乘之和

题目: 计算并输出1到10的所有整数的阶乘之和 描述 编写一个C程序,定义一个函数来计算给定整数n的阶乘,然后在main函数中利用该函数计算从1到10(包括1和10)所有整数的阶乘,并将这些阶乘值累加起来&#x…

51c嵌入式~单片机合集2

我自己的原文哦~ https://blog.51cto.com/whaosoft/12362395 一、不同的电平信号的MCU怎么通信? 下面这个“电平转换”电路,理解后令人心情愉快。电路设计其实也可以很有趣。 先说一说这个电路的用途:当两个MCU在不同的工作电压下工作&…

ROM修改进阶教程------安卓14 安卓15去除app签名验证的几种操作步骤 详细图文解析

在安卓14 安卓15的固件中。如果修改了系统级别的app。那么就会触发安卓14 15的应用签名验证。要么会导致修改的固件会进不去系统,或者进入系统有bug。博文将从几方面来解析去除安卓14 15应用签名验证的几种方法。 💝💝💝通过博文了解: 1💝💝💝-----安卓14去除…

抓包工具WireShark使用记录

目录 网卡选择: 抓包流程: 捕获过滤器 常用捕获过滤器: 抓包数据的显示 显示过滤器: 常用的显示过滤器: 实际工作中,在平台对接,设备对接等常常需要调试接口,PostMan虽然可以进…

工单管理系统哪个好用?2000字详细整理

工单管理系统已经成为提高客户服务效率和质量的重要工具。随着市场上可供选择的工单管理系统越来越多,企业在选择合适的系统时常常感到困惑。本文将详细介绍几款主流的工单管理系统,以帮助企业做出明智的选择。 一、工单管理系统的重要性 工单管理系统…

Vim9 语法高亮syntax 在指定的缓冲区和窗口执行命令

背景:从开发,创建makefile、编译、单元测试、到生产部署都只有俺一个人,所以所有的工作都要自己完成,因此有了想法做一个插件,按需实现:构建Makefile,编译、打包、压缩、上传服务器、解压、安装…

群控系统服务端开发模式-应用开发-前端个人资料开发

一、总结 其实程序开发到现在,简单的后端框架就只剩下获取登录账号信息及获取登录账号菜单这两个功能咯。详细见下图: 1、未登录时总业务流程图 2、登录后总业务流程图 二、获取登录账号信息对接 在根目录下src文件夹下store文件夹下modules文件夹下的us…

Harmony- List组件最后一个item显示不全

在使用List组件显示数据的时候会出现最后一个item显示不全的问题,如下 出现在高度问题上,如果List组件上下没有其他占位组件就是正常显示的 解决方案: 1.给List组件加上layoutWeight(1),使它填满父控件剩余空间; 2.还有一种情况…

Go语言实现用户登录Web应用

文章目录 1. Go语言Web框架1.1 框架比较1.2 安装Gin框架 2. 实现用户登录功能2.1 创建项目目录2.2 打开项目目录2.3 创建登录Go程序2.4 创建模板页面2.4.1 登录页面2.4.2 登录成功页面2.4.3 登录失败页面 3. 测试用户登录项目3.1 运行登录主程序3.2 访问登录页面3.3 演示登录成…

25浙江省考--两大模块(数量关系+常识判断)题型积累【2024.12.8考前每日更新】

行政执法C卷,两大模块题量占比:35/115,每题 100 115 \frac{100}{115} 115100​分,时间分配:20~35分钟,留10分钟涂卡 数量关系【题量占比:15/115】【时间分配:15~30分钟】 数字推理…