C++中的預設建構函式

來源:互聯網
上載者:User

>> Compiler何時自動產生Default Constructor

前文說到C++中的預設建構函式,那我們看看什麼時候會產生default constructor。

1. 類成員中有成員是類對象,並且該成員的類含有預設建構函式

C++編譯器會幫你
給這個類也產生一個預設建構函式,用來調用其成員對象的建構函式,完成該成員的初始化構造。需要注意的是,如果這個成員的類也沒有給出預設建構函式,那麼
C++編譯器也不會幫你產生該類的預設建構函式。

所以對於POD類型的struct,我們可以認為它就是C-Style struct。

2. 這個類的基類有預設建構函式

C++編譯器也會幫你產生該衍生類別的預設建構函式,以調用基類的預設建構函式,完成基類的初始化。

如果基類沒有提供這個預設構造的函數,那麼C++編譯器也不會為衍生類別產生預設的建構函式。

3. 類中存在虛函數,那麼C++編譯器會為你產生預設建構函式,以初始化虛表(虛函數表vftable)。

4. 存在虛基類,那麼C++編譯器會為你產生預設建構函式,以初始化虛基類表(vbtable)。


>> C++ 11 中的Defaulted Constructor

C++ 11增加了一個default關鍵字

 

struct SomeType
{
SomeType() = default; //The default constructor is explicitly stated.
SomeType(OtherType value);
};

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.