12.1/5的構造方法是平凡的,如果它是一個隱式聲明的默認的構造,並且如果:使用一個簡單的構造的
- 其類沒有虛擬功能(10.3),並且沒有虛基 類( 10.1),並
- 所有的它的類的直接基類具有 無關緊要的構造函數,並
- 其 類的那些類型(或其陣列)的所有非靜態數據成員,每個這樣的類有一個 微不足道的構造函數。
首先,我認爲一個簡單的構造函數只是一個隱式的默認構造函數。但是當閱讀標準中的上述文本時,似乎微不足道的構造函數不僅是一個隱含的默認構造函數,而且還有其他一些要求,如上所述。這是什麼意思?有一個微不足道的構造函數有什麼意義?
例如:
class X
{
// ...
};
確實類X有一個微不足道的或隱含的默認構造函數?
您能解釋一下構造函數如何與準備處理虛擬函數相關聯嗎? – user1086635 2012-01-05 03:54:03
@ user1086635編譯器向帶有虛函數的類的佈局添加一個隱藏指針,指向虛函數表(也稱爲vtable)。這個指針需要在類可以使用之前設置。 – dasblinkenlight 2012-01-05 03:59:04
但是在編譯時創建vtable,並且在創建對象時,隱藏的指針設置爲vtable。在這個過程中,構造函數在運行時永遠不會被調用,那麼它如何被使用? – user1086635 2012-01-05 06:14:13