1.?何時需要成員初始化列表?過程是什么?
- 當初始化一個引用成員變量時;
- 初始化一個const成員變量時;
- 當調用一個基類的構造函數,而構造函數擁有一組參數時;
- 當調用一個成員類的構造函數,而他擁有一組參數;
- 編譯器會一一操作初始化列表,以適當順序在構造函數之內安插初始化操作,并且在任何顯示用戶代碼前。list中的項目順序是由類中的成員聲明順序決定的,不是初始化列表中的排列順序決定的。
2.?????????空類的大小是多少?為什么?
- C++空類的大小不為0,不同編譯器設置不一樣,vs設置為1;
- C++標準指出,不允許一個對象(當然包括類對象)的大小為0,不同的對象不能具有相同的地址;
- 帶有虛函數的C++類大小不為1,因為每一個對象會有一個vptr指向虛函數表,具體大小根據指針大小確定;
- C++中要求對于類的每個實例都必須有獨一無二的地址,那么編譯器自動為空類分配一個字節大小,這樣便保證了每個實例均有獨一無二的內存地址。
?