侯捷-C++面向对象高级开发(操作符重载与临时对象)

本文深入探讨了C++中的操作符重载原理,特别是与临时对象的交互。讲解了成员函数与全局函数的区别,强调了this指针的作用。讨论了函数参数传递最佳实践,包括使用引用和const修饰。同时,阐述了返回值类型选择,如为何在操作符重载中通常需要返回引用以支持连续操作。最后,总结了编写C++类时应注意的几点,如初始化列表、const正确使用、返回方式等关键点。
摘要由CSDN通过智能技术生成

侯捷-C++面向对象高级开发(操作符重载与临时对象)

1.操作符重载与临时对象

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KPfWyDXY-1636779233680)(C:\Users\admin\AppData\Roaming\Typora\typora-user-images\image-20211113114845061.png)]

任何成员函数有一个隐藏的this pointer指向,指向调用者。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-a3qAQmDX-1636779233682)(C:\Users\admin\AppData\Roaming\Typora\typora-user-images\image-20211113115528363.png)]

传递者无需知道接收者是以什么形式接收

就比如下面方框内c1以value方式传递,接收者以引用方式接收

如果下面方框的操作那么成员函数的inline写成void也没问题,但是如果是右边方框的内容就不行

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-y4Rzai7F-1636779233683)(C:\Users\admin\AppData\Roaming\Typora\typora-user-images\image-20211113121428930.png)]

complex::function...//这种是成员函数
function...   //这种是全局函数

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YTiJORIl-1636779233684)(C:\Users\admin\AppData\Roaming\Typora\typora-user-images\image-20211113121641355.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-D6w3lHps-1636779233686)(C:\Users\admin\AppData\Roaming\Typora\typora-user-images\image-20211113122017725.png)]

全局函数与成员函数的区别在于后者有this pointer

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mBlWbfij-1636779233687)(C:\Users\admin\AppData\Roaming\Typora\typora-user-images\image-20211113122255575.png)]

操作之后的结果存下来之后会释放

注:typename()就是要创建临时对象

右边方框中前两行黄色的执行到空的那行就不见了

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dqGUMH7y-1636779233687)(C:\Users\admin\AppData\Roaming\Typora\typora-user-images\image-20211113123001380.png)]

这里不能返回引用

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QCugdgdS-1636779233688)(C:\Users\admin\AppData\Roaming\Typora\typora-user-images\image-20211113123318931.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NJixbj4T-1636779233689)(C:\Users\admin\AppData\Roaming\Typora\typora-user-images\image-20211113124327852.png)]

操作符有两种写法一种是成员函数写法一种是非成员函数的写法

由于要支持连串的输出所以返回的要用引用而不能void

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1JimAVSy-1636779233689)(C:\Users\admin\AppData\Roaming\Typora\typora-user-images\image-20211113125016683.png)]

总结写一个类的注意事项:

  • 会用构造函数的initialization list
  • 函数要不要加const
  • 参数传递尽量用引用,还要考虑要不要加const
  • return 的时候by value还是by reference
  • 数据放在private,函数放在public
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值