C++ 是一个难学易用的语言!难学一方面在于其广博,因此我选择用笔记的形式精简出一些有用的条款。
运算符重载
自增、自减
以自增为例:
- 前缀自增无参数,后缀自增带一个默认为 0 的
int
型参数 - 前缀自增返回类型为引用,可以保证连续操作,如
++++i
,而后缀自增返回类型加const
,避免i++++
这样的非法操作 - 前缀自增效率较高
&&
,||
和 ,
不要去重载 &&
,||
和 ,
,因为无法让他们的行为跟你所期待的一致,比如短路求值法。
各种 new
和 delete
关于 new
:
new
用于在堆内存中建立一个对象,即分配堆内存并为对象调用构造函数operator new
仅用于分配堆内存,new
中的内存分配部分也调用此函数placement new
用于在已经获得指针的内存里建立一个对象
关于 delete
:
delete
用于析构对象并释放operator new
分配的内存operator delete
仅用于释放operator new
出来的内存- 用
placement new
建立的对象一般需要显式调用析构函数
当遇到数组情况时,在操作符后加 []
,如 delete[]
。