C++细节系列(零):零散记录

老规矩:记录细节,等待空余,再进行整理。函数

 

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,移动函数的使用会提高运行效率。但须要注意,若是“偷窃”数据后的对象,依然会被其余线程和函数引用,会致使不可预测的错误。

相关文章
相关标签/搜索