編譯器生成預設建構函式情況

2021-09-11 19:49:17 字數 269 閱讀 5945

(1)類和物件:當乙個a類有預設建構函式,b類中包含a類物件,並且b類沒有建構函式,那麼編譯器會給b類生成預設建構函式

(2)繼承:基類有預設的建構函式,派生類沒有顯示給出建構函式。這種情況下,因為建立派生類物件會呼叫基類的建構函式,所以編譯器認為有必要生成派生類建構函式,所以會生成乙個派生類的建構函式。

(3)虛擬繼承:虛擬繼承中派生類多了四個位元組,編譯器會給派生類生成乙個建構函式,用於向四個位元組填入虛基表指標。

(4)多型:當乙個類包含虛函式,編譯器會預設生成乙個建構函式。

編譯器自動生成預設建構函式的情況

在程式設計師沒有為類定義預設建構函式的情況下,c 編譯器在某些情況下會自動生成預設建構函式。1.類中包含的其他有預設建構函式的類的物件 例如 class a private int data public a a a this data 10 class b private a m a int m ...

編譯器提供預設建構函式的幾種情況

在孫鑫的 vc 深入詳解 一書中,看到了這部分內容 在backer的幫助下,我們參看了ansic 的iso標準,並從彙編的角度試驗了幾種主流編譯器的行為,對於編譯器提供預設建構函式的行為得出下面的結論 如果乙個類中沒有定義任何建構函式,那麼只有以下三種情況時,編譯器才會提供預設建構函式 1 如果乙個...

C 編譯器生成預設建構函式的四種情況

第一種是類成員中有成員是類物件,並且該成員的類含有預設建構函式,那麼c 編譯器會幫你給這個類也生成乙個預設建構函式,用來呼叫其成員物件的建構函式,完成該成員的初始化構造。需要強調的是,如果這個成員的類也沒有給出缺省建構函式,那麼c 編譯器也不會幫你生成該類的預設建構函式。第二種情況是這個類的基類有預...