news 2026/6/4 0:19:57

C++之双目运算符重载

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
C++之双目运算符重载

文章目录

  • 运算符重载
  • 双目运算符重载

运算符重载

#include<iostream>usingnamespacestd;classComplex{private:doubler;doublei;public:Complex(doubler,doublei){this->r=r;this->i=i;}voidprint(void){cout<<r<<" + "<<i<<"i"<<endl;}};intmain(void){Complexa(1,2);Complexb(3,4);a.print();b.print();intx=10;inty=20;intz=x+y;a+b;//想像x+y 实现Complex对象加运算 +运算符新的逻辑功能 要实现+运算符的重载return0;}

双目运算符重载

  • 双目运算符:有左右两个操作数的操作符 L#R
    • 算术运算:*、/、%、+、-
    • 关系运算:>、>=、<、<=、==、!=
    • 逻辑运算:&&、||
    • 位运算:&、|、^、<< 、>>
    • 赋值与复合赋值:=、+=、-=、*=、/=、%=、&=、|=、^=、<<= 、>>=
    • … …
  • 注意:
    • 表达式结果是右值
    • 左右操作数既可以是左值也可以是右值
  • 实现方式:
    • 成员函数形式:L.operator#®
    • 友元函数形式:operator#(L,R)
#include<iostream>usingnamespacestd;classComplex{private:doubler;doublei;public:Complex(doubler,doublei){this->r=r;this->i=i;}voidprint(void){cout<<r<<" + "<<i<<"i"<<endl;}constComplexoperator+(constComplex&c){Complextmp(r+c.r,i+c.i);returntmp;}friendconstComplexoperator-(constComplex&l,constComplex&r);};constComplexoperator-(constComplex&l,constComplex&r){Complextmp(l.r-r.r,l.i-r.i);returntmp;}intmain(void){Complexa(1,2);Complexb(3,4);a.print();b.print();Complex c=a+b;// a.operator+(b);c.print();Complex d=c-a;// operator-(c, a);d.print();return0;}
  • 对赋值类双目运算符重载时需要注意的事项:
    • 表达式的结果是左值,就是左操作数的自身
    • 左操作数必须是左值,右操作数可以是左值也可以是右值
#include<iostream>usingnamespacestd;classComplex{private:doubler;doublei;public:Complex(doubler,doublei){this->r=r;this->i=i;}voidprint(void){cout<<r<<" + "<<i<<"i"<<endl;}constComplexoperator+(constComplex&c){Complextmp(r+c.r,i+c.i);returntmp;}Complex&operator+=(constComplex&c){r=r+c.r;i=i+c.i;return*this;}friendconstComplexoperator-(constComplex&l,constComplex&r);friendComplex&operator-=(Complex&L,constComplex&R);};constComplexoperator-(constComplex&l,constComplex&r){Complextmp(l.r-r.r,l.i-r.i);returntmp;}Complex&operator-=(Complex&L,constComplex&R){L.r-=R.r;L.i-=R.i;returnL;}intmain(void){Complexa(1,2);Complexb(3,4);a.print();b.print();Complex c=a+b;// a.operator+(b);c.print();Complex d=c-a;// operator-(c, a);d.print();a+=b;//a.operator+=(b);a.print();(a-=b).print();return0;}
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/30 22:50:00

工厂人员精准定位:技术落地入门刚需指南(包括核心痛点、技术逻辑、产品亮点)

本文面向工业物联网开发者、工厂 IT 负责人、安全生产系统集成商&#xff0c;通过高精度定位技术降低工厂事故率、优化人力调度、实现合规审计留痕&#xff0c;文章末尾可获取详细工厂人员精准定位方案~从互联网到物联网的发展进程中&#xff0c;工厂数字化转型已经不再局限于生…

作者头像 李华
网站建设 2026/5/30 17:45:39

专业版VS基础版:10款AI效率加速器的功能差异深度解析

&#xfffd;&#xfffd; 10大降AIGC平台核心对比速览 排名 工具名称 降AIGC效率 适用场景 免费/付费 1 askpaper ⭐⭐⭐⭐⭐ 学术论文精准降AI 付费 2 秒篇 ⭐⭐⭐⭐⭐ 快速降AIGC降重 付费 3 Aibiye ⭐⭐⭐⭐ 多学科论文降AI 付费 4 Aicheck ⭐⭐⭐⭐…

作者头像 李华
网站建设 2026/5/31 19:07:53

重庆思庄技术分享——让 PDB 随 CDB 启动自动 OPEN 的两种方式

让 PDB 随 CDB 启动自动 OPEN 的两种方式尤其是在做升级、补丁、系统重启或例行维护后&#xff0c;如果没有额外处理&#xff0c;业务 PDB 很可能停留在 MOUNTED&#xff0c;直接导致应用无法连接。本文基于 Oracle Database 19c&#xff0c;结合实际运维场景&#xff0c;系统性…

作者头像 李华
网站建设 2026/6/1 8:05:45

Java毕设选题推荐:基于springboot+小程序的智慧心理健康自助平台小程序的设计与实现【附源码、mysql、文档、调试+代码讲解+全bao等】

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

作者头像 李华
网站建设 2026/5/29 17:44:37

论文写作利器推荐:6款AI工具高效赋能学术创作与质量提升

在科研写作中&#xff0c;融合前沿NLP算法的智能辅助系统能够高效完成学术论文的框架构建、文本润色和相似度分析等关键任务&#xff0c;特别适合学位论文写作及文献整理需求。需注意&#xff0c;此类AI工具本质上属于科研生产力增强手段&#xff0c;学者仍需严格把控研究内容的…

作者头像 李华
网站建设 2026/5/26 18:23:21

国内外主流大模型技术架构与特色优势深度解析

引言 2026年全球大模型市场已形成"百花齐放"的格局&#xff0c;国内外头部模型在技术架构上各有侧重&#xff0c;形成了差异化的竞争优势。本文将从技术架构、核心优势、应用场景、指令特性四个维度&#xff0c;对当前主流大模型进行深度剖析&#xff0c;并提供代码…

作者头像 李华