條款05 了解C 默默編寫並呼叫哪些函式

2021-09-11 22:17:59 字數 769 閱讀 6487

什麼時候empty class(空類)不再是個empty呢?當c++處理過它之後。如果你定義類的時候自己沒有宣告,編譯器就會為它宣告(編譯器版本的)乙個copy建構函式、乙個copy assignment操作符和乙個析構函式。如果你沒有宣告任何建構函式,編譯器也會為你宣告乙個default建構函式。所有這些函式都是public並且inline。例: 

class empty

;

就相當於寫下:

class empty

//default建構函式

empty(const empty& rhs) //copy建構函式

~empty() //析構函式

empty& operator=(const empty& rhs) //copy assignment操作符

};

當這些函式被需要,它們就會被編譯器建立出來。

empty e1;                        //default建構函式

empty e2(e1); //copy建構函式

e2 = e1; //copy assignment操作符

結論:編譯器可以暗自為class建立default建構函式、copy建構函式、copy assignment操作符、以及析構函式。

條款05 了解C 默默編寫並呼叫哪些函式

條款05 了解c 默默編寫並呼叫哪些函式 編譯器可以暗自為class建立default建構函式,copy建構函式,copy assignment操作符,以及析構函式 唯有當這些函式被呼叫,它們才會被編譯器建立出來 include include using std cout using std en...

條款05 了解C 默默編寫並呼叫哪些函式

什麼時候乙個空類,不再是空類了呢?當c 編譯器處理之後。如果沒有定義,編譯器會為你產生四個函式 1 預設建構函式 2 copy建構函式 3 賦值建構函式 4 析構函式 注意這些函式都是public且是inline的。這裡還有一點要說明的 不是說編譯器一定會為你產生這些函式,而是說,當這些函式被呼叫時...

條款05 了解C 默默編寫並呼叫哪些函式

每乙個class都會有乙個或多個建構函式 乙個析構函式 乙個copy assignment操作符。這些控制著基礎操作,像是產出新物件並確保它被初始化 擺脫舊物件並確保它被適當清理 以及賦予物件新值。那麼當你當你編寫了乙個empty class的時候,當你利用編譯器的對 進行處理的時候,它其實已經並非...