1 构造函数和析构函数
1.1 构造函数:对象创建时调用构造函数,构造函数是初始化对象的属性
1.2 析构函数:对象在销毁前调用析构函数,析构函数做清理工作
1.3 构造函数分类:无参构造,有参构造,拷贝构造
1.4 编译器给类提供了什么函数:默认构造函数(无参),默认拷贝构造,析构函数,默认的赋值函数
1.5 如果自己提供了构造函数,那么编译器不会提供默认的构造函数,但是会提供默认的拷贝构造函数
1.6 如果自己提供了拷贝构造函数,那么编译器不会提供任何默认构造函数
1.7 构造函数,没有返回值,没有void
1.8 析构函数不能重载,没有参数,没有返回值,没有void
2 匿名对象
2.1 没有名字的对象,他的生命周期在当前行
2.2 当前面有Maker maker; 后面不就能这样写Maker(maker)
3 调用拷贝构造函数的时机
3.1 一个对象去初始化另一个对象时
3.2 对象做函数参数时
3.3 看编译器:返回局部对象时,有的调用,有的不调用
4 多个对象的构造函数调用顺序
4.1 先调用成员对象,成员对象的调用顺序看定义前后,最后调用本身的构造函数
4.2 析构函数调用的顺序和构造函数相反
4.3 为什么要写初始化列表:当成员对象没有默认构造时,我们要调用其他构造函数是,需要显示的调用,这时要写初始化列表
5 深浅拷贝
5.1 如果类内有指针,并且该指针指向申请的堆空间,这时只使用默认的拷贝构造函数,那么会出现浅拷贝问题,(一块空间在析构函数中被释放两次)
5.2 深拷贝:自己写的拷贝构造函数,申请一块空间,把旧空间的数据拷贝到新空间