news 2026/4/16 9:22:10

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/4/2 4:27:52

Java毕设项目推荐-基于SpringBoot+Vue食品安全信息管理系统设计和实现基于springboot的食品安全管理系统【附源码+文档,调试定制服务】

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

作者头像 李华
网站建设 2026/4/11 19:34:04

从基础到专业:10款热门AI效率加速器的功能升级对比

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

作者头像 李华
网站建设 2026/4/3 6:47:01

读一下FLOPs的计算以及参数量公式+推导逻辑

原文&#xff1a;FLOPs&#xff08;Floating-point operations&#xff09;是浮点计算量的简称[17]&#xff0c;通常使用 FLOPs 来表示模型的计算复杂度。将一个输入通道数为&#x1d436;&#x1d456;&#x1d45b;&#xff0c;输出通道数为&#x1d436;&#x1d45c;&#…

作者头像 李华
网站建设 2026/4/3 6:40:38

Java计算机毕设之基于springboot的医院后勤采购管理系统基于springboot的医院资源管理系统(完整前后端代码+说明文档+LW,调试定制等)

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

作者头像 李华
网站建设 2026/4/15 14:34:32

Go语言标准库与工程化能力:开箱即用的生产力

Go语言最被低估的优势不是语法&#xff0c;也不是性能&#xff0c;而是标准库的深度与工具链的完备性。它让开发者从「环境配置」「依赖地狱」「格式争议」这些工程化琐事中彻底解放&#xff0c;专注于业务逻辑本身。本文深入剖析 Go 的网络编程标准库、一体化工具链&#xff0…

作者头像 李华