老规矩:记录细节,等待空余,再进行整理。函数
1:const,static,const static成员初始化。线程
一、const成员:只能在构造函数后的初始化列表中初始化指针
二、static成员:初始化在类外,且不加static修饰。对象
三、const static成员:类只有惟一一份拷贝,且数值不能改变。所以,能够在类中声明处初始化,也能够像static在类外初始化。递归
2:拷贝赋值函数 和 拷贝构造函数。ci
1,拷贝赋值函数.it
1)返回值是 左侧类型的引用。效率
2,拷贝构造函数。构造函数
1,一般的主体功能应该为:复制全部非static的类成员。引用
2,系统会默认构造。但尽可能自行完成(除非类复制很简单)。
3,参数必须为引用。不然会致使递归调用,最终崩溃。
3,拷贝赋值函数 和 拷贝构造函数 是相互须要的。即:若是须要定义拷贝赋值函数就必须定义拷贝构造函数。反之亦然。
3:explicit关键字。
1,标识此关键字的构造函数,必须显示使用。没法隐式调用。
4:析构函数。
1,析构函数函数体内并不进行类成员的销毁。而是当析构函数体完成后,再销毁成员。
2,对于指针,销毁功能仅销毁指针自己,并不销毁指针指向的对象。因此,须要在析构函数中对指针进行delete/free
3,在原则上,一个类拥有析构函数,那就应该也拥有本身的拷贝构造函数和拷贝赋值函数。
5:移动函数。
1,分为移动函数 和 移动赋值函数。
2,移动函数(包括赋值)特色:“偷窃”源对象的数据。会致使源对象进入一种不可预测的状况。
3,移动函数的使用会提高运行效率。但须要注意,若是“偷窃”数据后的对象,依然会被其余线程和函数引用,会致使不可预测的错误。