OOP05-2 运算符重载

重载方法

本质上是定义一个函数,在指定类型使用该操作符时调用该函数。

函数类型 operator 运算符名称 (形参表列)
{ 对运算符的重载处理 }

比如对+进行重载,注意使用隐指针引用:

Complex operator+ (Complex& c1,Complex& c2);

重载规则

1.只能重载已有运算符。

2.类属关系运算符“.”、作用域分辨符“::”、成员指针运算符“*”、sizeof运算符和三目运算符“?:”不能重载。

3.不改变优先级,结合性,操作数个数,语法结构。单目运算符重载后为单目,双目重载后为双目。

4.重载运算符不允许有默认参数

5.重载至少针对一个类。=和&不需要用户重载

重载为成员函数

将操作符重载为类的成员函数,可以自由访问该类的成员。

函数声明:

 <类型> operator <要重载的运算符>(形参表);

函数定义:

 <类型> <类名>:: operator <要重载的运算符>(形参表)
     {
         函数体
      }

双目运算

重载时只有一个形参,就是加数。被加数默认是当前对象。

oprd1 B oprd2,等价于oprd1.operateB(oprd2)

单目运算

前置单目:B oprd

没有形参,操作对象是当前对象 ,相当于 oprd.opratorB()

后置单目:oprd B

一个int类型的形参,相当于oprd.opratorB(0);

对于++(或–)运算符的重载,因为编译器不能区分出++(或–)是前置的还是后置的,所以要加上(int)来区分。

重载为友元函数

函数声明:

friend <函数类型>  operator  <运算符>(形参表);

函数定义:

<函数类型>  operator  <运算符>(形参表)
{
      函数体;
}

双目运算

oprd1 B oprd2 相当于调用 operator B(oprd1, oprd2)

有两个形参

单目运算

前置:B oprd,相当于operator B(oprd)

后置:oprd B,相当于operator B(oprd, int)

重载设计

重载为类成员函数的有:=,[ ],( ),->(以上必须)

和对象联系紧密的,比如自增自减(非必须)

重载为友元函数的有:算数操作符,相等操作符,关系操作符,位操作符(>>,<<)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值