老規矩:記錄細節,等待空餘,再進行整理。函數
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,移動函數的使用會提高運行效率。但須要注意,若是「偷竊」數據後的對象,依然會被其餘線程和函數引用,會致使不可預測的錯誤。