C 何時才提供預設建構函式

2021-06-20 15:30:28 字數 520 閱讀 6724

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

、   這個類的基類有預設建構函式。那麼c++編譯器也會幫你生成該派生類的預設建構函式,以呼叫基類的預設建構函式,完成基類的初始化。另外還得強調一下的是,如果基類沒有提供這個預設構造的函式,那麼c++編譯器也不會為派生類生成預設的建構函式(這裡包括兩層意思,第一,基類沒有任何形式建構函式;第二,基類存在其他形式的非預設建構函式,當然了,這種型別就是編譯不過的,道理很明顯)。

、類中存在虛函式,那麼c++編譯器會為你生成預設建構函式,以初始化虛表(虛函式表vftable)。

四、存在虛基類,那麼c++編譯器會為你生成預設建構函式,以初始化虛基類表(vbtable)。

C 編譯器何時為使用者提供預設建構函式

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

C 編譯器何時為使用者提供預設建構函式

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

C 編譯器何時提供預設的建構函式和拷貝建構函式

2008年08月27日 星期三 10 16 總的來說,編譯器只在它需要的時候才會合成乙個預設建構函式,或者擴張所有已存在的建構函式。乙個類滿足下列其中任何乙個條件 1.包含了乙個類的物件,這個物件有乙個建構函式 包括編譯器合成的預設建構函式 2.如果繼承自一些基類,其中某些基類有乙個建構函式 包括編...