10.3 C++运算符重载实现的过程,代码

目录

运算符重载背景(operator)

定义

重载的方法

不能重载的运算符

运算符重载注意事项 

 代码实现

运行结果


运算符重载背景(operator)

自定义的类中,系统默认只提供两个运算符供用户使用,分别是赋值运算符(=)和取地址运算符(&),其余运算符只使用用基本数据类型,对于构造数据类型而言,不可直接使用,除非将该运算符进行重载操作.

定义

运算符重载是静态多态的一种,能够实现“一符多用”,使用运算符重载,能够完成运算符作用于类对象之间,使得代码更加简洁、可读性更强。

重载的方法

operator# (#表示运算符号)

不能重载的运算符

1> 成员运算符 .

2> 成员指针运算符 .*

3> 作用域限定符 ::

4> 求字节运算符 sizeof

5> 三目运算符 ?:

运算符重载注意事项 

1> 运算符重载,不能改变运算符的优先级

2> 运算符重载,不能改变运算符操作数个数

3> 运算符重载,不能更改运算符的本质逻辑,如不允许在加法运算符重载函数中,实现加法

4> 运算符重载,不能自己造运算符,是在已有的运算符的基础上进行重载操作

5> 运算符重载,不能改变运算符的结合律

6> 运算符重载,一般不设置默认参数

 代码实现
#include <iostream>using namespace std;
//定义一个复数类
class Complex
{
private:int real; //实部int vir;  //虚部
public:Complex(){}Complex(int r,int v):real(r),vir(v){}//定义展示函数void show(){if(vir>=0){cout<<real<<" + "<<vir<<"i"<<endl;}else{cout<<real<<vir<<"i"<<endl;}}//成员函数版实现减法(-)运算符重载const Complex operator- (const Complex &R){Complex c;c.real=this->real-R.real;c.vir=this->vir-R.vir;return c;}//重载:+=  实部+=实部 虚部+=虚部Complex & operator+=(const Complex &R){this->real+=R.real;this->vir+=R.vir;return *this;}//重载:-=Complex & operator-=(const Complex &R){this->real-=R.real;this->vir-=R.vir;return *this;}//重载中括号[]运算符int & operator[](int index){if(index==0){return real;}else if(index==1){return vir;}}//重载前置自增运算符重载函数:实部 = 实部+1   虚部=虚部+1Complex &operator++(){++this->real;++this->vir;return *this;}//重载后置自增运算符重载函数:实部 = 实部+1   虚部=虚部+1Complex operator++(int){Complex c;c.real = this->real++;c.vir = this->vir++;return c;}};
int main()
{Complex c1(5,3);Complex c2(2,1);c1.show();    //测试Complex c3=c1-c2;c3.show();Complex c4=c1+=c2;   //测试+=c4.show();Complex c5=c1-=c2;c5.show();c5[0]=10;        //将实部参数进行修改c5.show();Complex c6=++c1;   //测试自增c6.show();Complex c7=c2++;;c7.show();return 0;
}
运行结果

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

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

相关文章

spark on hive

需要提前搭建好hive&#xff0c;并对hive进行配置。 1、将hive的配置文件添加到spark的目录下 cp $HIVE_HOME/conf/hive-site.xml $SPARK_HOME/conf2、开启hive的hivemetastore服务 提前创建好启动日志存放路径 mkdir $HIVE_HOME/logStart nohup /usr/local/lib/apache-hi…

合并不同年度收入数据-外连接

案例需求&#xff1a;统计2019年和2020年的客户销售收入并求和 思路&#xff1a;使用pandas读取excel数据横向连接&#xff0c;使用sum()含函数求和 代码如下&#xff1a; 1、使用pandas读取excel数据 2、由于两个表一个是"客户名称"&#xff0c;一个是客户描述,使…

PHP 行事准则:allow_url_fopen 与 allow_url_include

文章目录 参考环境allow_url_fopenallow_url_fopen 配置项操作远程文件file 协议 allow_url_includeallow_url_include 配置项 allow_url_include 与 allow_url_fopen区别联系默认配置配置项关闭所导致异常运行时配置ini_set()限制 参考 项目描述搜索引擎Bing、GoogleAI 大模型…

毕设-原创医疗预约挂号平台分享

医疗预约挂号平台 不是尚医通项目&#xff0c;先看项目质量&#xff08;有源码论文&#xff09; 项目链接&#xff1a;医疗预约挂号平台git地址 演示视频&#xff1a;医疗预约挂号平台 功能结构图 登录注册模块&#xff1a;该模块具体分为登录和注册两个功能&#xff0c;这些…

C++库函数——set与map的模拟实现

1.红黑树的迭代器与改造 ①红黑树的迭代器 对于上面这棵红黑树&#xff0c;我们可以很容易得知道begin()是红黑树的最左节点&#xff0c;end()应该是一个空节点。即 iterator begin() {Node* cur _root;while (cur && cur->_left){cur cur->_left;}return cu…

蓝桥杯---第二讲---二分与前缀和

文章目录 前言Ⅰ. 数的范围0x00 算法思路0x00 代码书写 Ⅱ. 数的三次方根0x00 算法思路0x01代码书写 Ⅲ. 前缀和0x00 算法思路0x01 代码书写 Ⅳ. 子矩阵的和0x00 算法思路0x01 代码书写 Ⅴ. 机器人跳跃问题0x00 算法思路0x01 代码书写 Ⅵ. 四平方和0x00 算法思路0x01 代码书写 …

创意中秋与国庆贺卡 - 用代码为节日增添喜悦

目录 ​编辑 引言 贺卡的初始主题 - 中秋节 点击头像&#xff0c;切换至国庆主题 文本动画 用代码制作这个贺卡 获取完整代码&#xff08;简单免费&#xff09; 总结 引言 中秋佳节和国庆日是中国两个重要的传统节日&#xff0c;一个寓意团圆与祝福&#xff0c;另一个…

【AI视野·今日NLP 自然语言处理论文速览 第四十七期】Wed, 4 Oct 2023

AI视野今日CS.NLP 自然语言处理论文速览 Wed, 4 Oct 2023 Totally 73 papers &#x1f449;上期速览✈更多精彩请移步主页 Daily Computation and Language Papers Contrastive Post-training Large Language Models on Data Curriculum Authors Canwen Xu, Corby Rosset, Luc…

节日灯饰灯串灯出口欧洲CE认证办理

灯串&#xff08;灯带&#xff09;&#xff0c;这个产品的形状就象一根带子一样&#xff0c;再加上产品的主要原件就是LED&#xff0c;因此叫做灯串或者灯带。2022年&#xff0c;我国灯具及相关配件产品出口总额超过460亿美元。其中北美是最大的出口市场。其次是欧洲市场&#…

leetCode 45.跳跃游戏 II 贪心算法

45. 跳跃游戏 II - 力扣&#xff08;LeetCode&#xff09; 给定一个长度为 n 的 0 索引整数数组 nums。初始位置为 nums[0]。 每个元素 nums[i] 表示从索引 i 向前跳转的最大长度。换句话说&#xff0c;如果你在 nums[i] 处&#xff0c;你可以跳转到任意 nums[i j] 处: 0 &…

剑指offer——JZ26 树的子结构 解题思路与具体代码【C++】

一、题目描述与要求 树的子结构_牛客题霸_牛客网 (nowcoder.com) 题目描述 输入两棵二叉树A&#xff0c;B&#xff0c;判断B是不是A的子结构。&#xff08;我们约定空树不是任意一个树的子结构&#xff09; 假如给定A为{8,8,7,9,2,#,#,#,#,4,7}&#xff0c;B为{8,9,2}&…

生产设备巡检管理系统

凡尔码搭建生产设备巡检系统是通过确保巡检工作的质量以及提高巡检工作的效率来提高设备维护水平的一种系统&#xff0c;它对巡检管理考核工作从巡检人员、巡检任务、隐患管理、图像视频、盯防考核进行严格、科学的统计、分析&#xff0c;从而有效的保障巡检工作的顺利展开&…