一.在C++中預設産生6個類成員函數,即預設函數,它們分别是:
1.預設構造函數
2.預設拷貝構造函數
3.預設析構函數
4.預設指派運算符
5.預設取址運算符
6.預設取位址運算符
二,const對于空類,編譯器不會生成任何的成員函數,隻會生成1個位元組的占位符。有時可能會以為編譯器會為空類生成預設構造函數等,事實上是不會的,編譯器隻會在需要的時候生成6個成員函數:一個預設的構造函數、一個拷貝構造函數、一個析構函數、一個指派運算符、一對取址運算符和一個this指針。
1.構造函數定義及調用
1) c++中的類可以定義與類名相同的特殊成員函數,這種與類名相同的函數叫做析構函數;
2) 構造函數在定義時可以有參數;
3) 沒有任何傳回類型的聲明
2.拷貝構造函數的目的就是完成對一個對象的拷貝,一般在一下三種場景下會調用該對象的拷貝構造函數:
1)函數傳回類型是類的對象時
2)函數的參數是類的對象,調用該函數時會調用該類的拷貝構造函數
3)使用一個對象去初始化類的另一個對象時 F a = new F(1,2); F b = a; / F b(a) 注意必須要在類的初始化中使用,不是類的指派注:為什麼自定義拷貝構造函數必須是引用傳遞(&)而不能是值傳遞?因為防止無限遞歸,因為如果是值傳遞則會再一次調用拷貝構造函數
3.析構函數的定義及調用
- c++中的類可以定義一個特殊的成員函數清理對象,這個特殊的成員函數叫做析構函數 2) 析構函數沒有參數也沒有任何傳回類型的聲明
- 析構函數在對象銷毀時自動被調用
4.運算符重載函數名字為:關鍵字operator後面接需要重載的運算符符号。函數原型:傳回值類型operator操作符(參數清單)指派運算符主要有四點:
1)參數類型
2)傳回值
3)檢測是否自己給自己指派
4)傳回*this
5)一個類如果沒有顯式定義指派運算符重載,編譯器也會生成一個,完成對象按照位元組序的值拷貝。
5.取位址成員函數,分為兩種,普通取位址操作符、const取位址操作符。取位址是什麼意思呢?就是傳回目前對象的位址,對于成員函數來講,this指針就是它的位址,需要傳回指針。
6.this指針有哪些特性呢
1)this是一個指針,它時時刻刻指向你這個執行個體本身。
2)this指針的類型 類類型 *const
3)this指針并不是對子昂本身的一部分,不影響sizeof的結果
4)this指針的作用域在類成員函數的内部
5)隻有在類的非靜态成員函數中才可以使用,其它任何函數都不可以