C++ 类的成员函数
六个特殊的成员函数
- 构造函数
尽可能使用列表初始化
constructor():...{}
why?:列表初始化调用的是复制构造函数,对大多数类型复制构造比构造快;对fundamental-types两者一样快 - 析构函数
记得使用虚函数(要做基类而且要实现多态的话),以防止调用基类析构函数不完全析构导致的内存泄漏(换句话说当有有虚函数时定义析构函数为虚函数)
同理,不要试图继承没有虚析构函数的类
remark1:使用虚函数会使指向实例的指针带有虚指针(vptr)[用于存储类型],导致指针大小增加50~100%,此时若向其它语言的程序传输指针(如C)会出问题,需要停用虚函数(因为vptr不能和指针分割)
remark2:纯虚析构函数需要给出定义,不然链接器直接开摆(派生类析构函数会调用基类析构函数) - 复制构造函数
- 复制运算符
- 移动构造函数
- 移动赋值运算符
- 若定义了移动构造函数和移动赋值运算符,则不会提供默认复制构造函数和复制运算符,反之同理; 使用
default让编译器帮你生成默认函数(能偷懒为什么不呢) - 禁用复制||移动构造函数(运算符):声明但不定义为private或使用
delet关键字 - 重载操作符记得返回this指针
operator=需要考虑自己等于自己的情况,具体情况具体写法

浙公网安备 33010602011771号