天天看點

C++的6個預設函數

一.在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.析構函數的定義及調用

  1. c++中的類可以定義一個特殊的成員函數清理對象,這個特殊的成員函數叫做析構函數 2) 析構函數沒有參數也沒有任何傳回類型的聲明
  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)隻有在類的非靜态成員函數中才可以使用,其它任何函數都不可以

繼續閱讀