Geekband C++ Week1 Notes

  • 相同class的各个实例互为友元

  • 返回值

    • 返回引用是好的,但并不总是可行,主要问题是局部变量作用域的问题
    • 有了右值引用和(N)RVO的存在,实际上大多数时候也不用特意返回引用
  • 操作符重载

    • 双目运算符为什么必须是非成员函数? --> 没有这种必要性,只是典型实践,视频的理由(加号和正号同时作为成员函数会冲突这种说法是错误的,全部作为成员函数也不会有任何问题)

    • 重载的运算符作为成员函数,例如+=,需要修改调用者实例本身(this指针指向的内容)

    • 重载的运算符作为友元函数,例如+,无须对调用者实例本身进行修改

    • 重载运算符作为非成员函数,<<
      os << foo();中,<<作用在os上,ostream类中不可能有operator(os, const Foo&)这个成员函数, 类似的还有>>

    • 通常不需要修改调用者实例本身的运算符也无需重载为成员函数

    • operator=的返回值使用const修饰是有好处的,(x=5)=y这种奇葩行为有了const修饰的operator=会报错,不过不考虑也没问题,没人会这么写代码

    • 加号和正号的区分,依赖于参数个数

  • 临时对象的概念会带来RAII这种现代C++鼓励的用法

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • GeekBand C++ Week1 Notes A.OOP-面向对象编程 1基础:C语言 -变量variable...
    古来征战几人回阅读 555评论 0 0
  • C++运算符重载-下篇 本章内容:1. 运算符重载的概述2. 重载算术运算符3. 重载按位运算符和二元逻辑运算符4...
    Haley_2013阅读 1,485评论 0 49
  • 前言 把《C++ Primer》[https://book.douban.com/subject/25708312...
    尤汐Yogy阅读 9,545评论 1 51
  • 重新系统学习下C++;但是还是少了好多知识点;socket;unix;stl;boost等; C++ 教程 | 菜...
    kakukeme阅读 20,071评论 0 50
  • 无人与我立黄昏,无人问我粥可温。 3 无人与我捻熄灯,无人共我书半生。 无人陪我夜已深,无人与我把酒分。 无人拭我...
    爱喝奶茶的猪阅读 210评论 0 0