当前位置: 首页 > news >正文

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;}
http://www.jsqmd.com/news/363269/

相关文章:

  • 10款热门AI效率工具对比:基础版与专业版功能差异全解析
  • 【课程设计/毕业设计】基于微信小程序的智能身心健康管家系统健康档案数据基于springboot+小程序的智能身心健康管家系统小程序的设计与实现【附源码、数据库、万字文档】
  • 【中文文档】AN2606_STM32微控制器系统存储器自举模式
  • Java毕设项目:基于springboot+小程序的智能身心健康管家系统小程序的设计与实现(源码+文档,讲解、调试运行,定制等)
  • 特价股票与公司股东积极主义的关联性研究
  • 2026优质空压机厂家推荐:阿特拉斯/博莱特/富达/博莱特/变频/螺杆/离心式/无油空压机保养维修及租赁服务,北京易德盛世凭专业实力登顶五星 - 海棠依旧大
  • 专业版VS基础版:10款AI效率加速器的功能差异深度解析
  • 机房IP和住宅IP有什么区别?
  • 基础版与专业版对比:10款热门AI效率工具的核心功能差异解析
  • 2026.1.29总结
  • 从零学习Kafka:数据存储
  • 计算机的核心:抽象与共性
  • AI效率加速器基础版VS专业版:10款热门工具功能差异详解
  • 2026.1.28总结
  • 2026年蜂窝板生产厂家厂家最新推荐:隐框蜂窝板、OPPR封边蜂窝板、蜂窝板供应厂家、蜂窝板公司、蜂窝板品牌选择指南 - 优质品牌商家
  • 【计算机毕业设计案例】基于springboot的食品安全管理系统基于SpringBoot的在线食品安全信息平台(程序+文档+讲解+定制)
  • Java毕设项目推荐-基于SpringBoot开发的掌上个人健康管理系统设计与实现基于SpringBoot健康管理小程序的设计与实现【附源码+文档,调试定制服务】
  • 【计算机毕业设计案例】基于SpringBoot开发的掌上个人健康管理系统设计与实现基于springboot+小程序的智能身心健康管家系统小程序的设计与实现(程序+文档+讲解+定制)
  • 工厂人员精准定位:技术落地入门刚需指南(包括核心痛点、技术逻辑、产品亮点)
  • Linux从入门到进阶 第三章
  • 【大模型】读代码:mini_qwen_pt.py qwen模型预训练代码
  • 恒等变换概念暴露初等数学2300年重大错误:将无穷多前所未知的射线误为熟悉的射线
  • StataNow更新之心理测量学meta分析
  • 基于Java+SpringBoot的乐器类课程报名预约系统(源码+lw+部署文档+讲解等)
  • 2-9午夜盘思
  • Java毕设项目推荐-基于SpringBoot+Vue食品安全信息管理系统设计和实现基于springboot的食品安全管理系统【附源码+文档,调试定制服务】
  • 人工智能|大模型——RAG——RAG从理论到实战
  • 【计算机毕业设计案例】基于java+springboot+vue+mysql的高校办公室行政事务管理系统设计与实现(程序+文档+讲解+定制)
  • Java毕设选题推荐:基于springboot+小程序的智能身心健康管家系统小程序基于微信小程序的智能身心健康管家系统健康档案数据【附源码、mysql、文档、调试+代码讲解+全bao等】
  • HTTPS 端口解析,除了 443 端口还有哪些