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)