运算符重载

More Effective C++ 学习笔记

Posted by Echo on April 23, 2020

C++ 是一个难学易用的语言!难学一方面在于其广博,因此我选择用笔记的形式精简出一些有用的条款。

运算符重载

自增、自减

以自增为例:

  1. 前缀自增无参数,后缀自增带一个默认为 0 的 int 型参数
  2. 前缀自增返回类型为引用,可以保证连续操作,如 ++++i,而后缀自增返回类型加 const,避免 i++++ 这样的非法操作
  3. 前缀自增效率较高

&&,|| 和 ,

不要去重载 &&,|| 和 ,,因为无法让他们的行为跟你所期待的一致,比如短路求值法。

各种 new 和 delete

关于 new:

  1. new 用于在堆内存中建立一个对象,即分配堆内存并为对象调用构造函数
  2. operator new 仅用于分配堆内存,new 中的内存分配部分也调用此函数
  3. placement new 用于在已经获得指针的内存里建立一个对象

关于 delete:

  1. delete 用于析构对象并释放 operator new 分配的内存
  2. operator delete 仅用于释放 operator new 出来的内存
  3. 用 placement new 建立的对象一般需要显式调用析构函数

当遇到数组情况时,在操作符后加 [],如 delete[]。