候捷 面向对象高级开发3 操作符重载与临时对象

  • 操作符重载1-成员函数

 

 

        所有的成员函数(除静态成员函数)都带有一个隐藏的this参数,

       作为成员函数的调用者,

       this不能在参数列写出来,但是在函数中可以使用, 在 图中 c2+= c1中,

       c2就是this,this是一个指向c2的指针,c2 += c1, 就是将c1加到c2 上去,

       在函数中,我们封装成 __doapl,这样其他函数也可以用到,__doapl是标准

       库里的复数的设计代码,所有的二元重载运算符都是类似

 

  •  返回引用的语法分析   传递者无需知道接受者是用什么形式接收

 

 

         所以我们更倾向于用引用接收,我们返回 *this是一个object,接收端用什么形式

        接收传递者并不知道,c3 += c2 += c1;中,以引用作为返回值,可以实现连加操作,

         而如果 +=重载的返回值是void就无法实现

 

  • 类体之外的各种定义

 

        

 

  • 操作符重载2 非成员函数

 

 

        非成员函数的重载与成员函数的重载相比,区别在于它没有this指针

        作为设计者,需要应付使用者所有可能的加操作

 

  • 临时对象

 

 

         临时对象作为返回值不能被引用接收

         complex() ; 类直接加小括号,创建临时对象,用完马上返回

         右边当中 complex(),和complex(4,5);都是临时对象,他们的生命进行

         到下一行马上就消失了

 

  • body之外的各种定义 取正 取反

 

 

         + 重载并没有返回引用,这是标准库的代码,并没有错,但不是最好的写法,应该加&

 

  • 操作符重载 非成员函数

 

 

      

 

 

        << 操作符只能被重载成全局函数,它作用在cout参数身上,不可能认识现在

         才发展出来的复数类型,且返回值不能为const,因为在向os传数据的过程中,

         os的状态是不断改变的,返回值是ostream 因为要实现连续输出的功能

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值