news 2026/4/1 8:01:37

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/3/27 21:51:46

【课程设计/毕业设计】基于springboot的食品安全管理系统食品安全信息管理系统【附源码、数据库、万字文档】

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

作者头像 李华
网站建设 2026/3/25 3:40:02

【课程设计/毕业设计】基于微信小程序的智能身心健康管家系统健康档案数据基于springboot+小程序的智能身心健康管家系统小程序的设计与实现【附源码、数据库、万字文档】

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

作者头像 李华
网站建设 2026/3/31 23:56:43

Java毕设项目推荐-基于SpringBoot开发的掌上个人健康管理系统设计与实现基于SpringBoot健康管理小程序的设计与实现【附源码+文档,调试定制服务】

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

作者头像 李华
网站建设 2026/3/25 17:05:53

AI效率加速器基础版VS专业版:10款热门工具功能差异详解

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

作者头像 李华
网站建设 2026/3/30 23:18:51

人工智能|大模型——RAG——RAG从理论到实战

各位技术大佬&#xff0c;大家好&#xff01;今天非常荣幸能够与大家一同探讨和学习与RAG相关的理论与技术&#xff0c;分享的相关内容与知识仅供大家参考&#xff0c;抛砖引玉&#xff0c;有不对的地方评论区多多指正。 在当今人工智能技术飞速发展的时代&#xff0c;大模型已…

作者头像 李华
网站建设 2026/3/24 16:47:31

张量数据库的优势与劣势

张量数据库的核心优势集中在高维张量数据的存储、检索和 AI/ML 场景适配&#xff0c;是为高维数据而生的专属数据库&#xff1b;而劣势主要体现在通用场景适配性差、生态成熟度低&#xff0c;且在传统事务处理上远不如关系型数据库&#xff0c;二者优劣高度互补&#xff0c;核心…

作者头像 李华