运算符重载

More Effective C++ 学习笔记

Posted by Echo on April 23, 2020

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

运算符重载

自增、自减

以自增为例:

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

&&||,

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

各种 newdelete

关于 new

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

关于 delete

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

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