C++ Primer Plus 第十二章筆記

1.      調用複製構造函數:

當函數按值傳遞對象或函數返回對象時,都將使用複製構造函數。

2.      如果類中包含了使用new初始化的指針成員,應當定義一個複製構造函數,以複製指向的數據,而不是指針,稱爲深度賦值。複製的另一種形式只是複製指針值,僅淺淺地複製指針信息,稱爲淺複製。

3.      將已有的對象賦給另一個對象時,將使用重載的賦值運算符;初始化對象時,並不一定會使用賦值運算符。

4.      賦值運算符是隻能由類成員函數重載的運算符之一。

5.      將成員函數聲明爲靜態的,函數聲明必須包括關鍵字static而定義不用。不能通過對象調用靜態成員函數,也不能使用this指針。如果靜態成員函數是在公有部分聲明的,可以使用類名和作用域解析運算符來調用它。靜態成員函數不與特定的對象相關聯,只能使用靜態數據成員。

6.      定義一個複製構造函數和一個賦值運算符(以String類爲例):

7.      返回對象將調用複製構造函數而返回引用不會。

8.      重載<<運算符:

9.      單個值轉換爲類類型的類構造函數及類轉換爲其他類型的類成員函數:

聲明時使用關鍵字explicit可防止被用於隱式轉換。

10.  對於const數據成員,必須在執行到構造函數體之前,即創建對象之前進行初始化,可運用成員初始化列表完成。成員初始化列表由逗號分隔的初始化列表組成(前面帶冒號)。只有構造函數可以使用這種初始化列表語法。對於const類成員和被聲明爲引用的類成員,必須使用這種語法。

注意:數據成員被初始化的順序與它們出現在類聲明中的順序初始化,與初始化器中的排列順序無關。

11.  成員初始化列表使用的括號方式也可用於常規初始化。

12.  定義僞私有方法避免了本來將自動生成的默認方法定義,且方法不能被廣泛使用。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章