1. The semantics of construction
有4種情況會導致“編譯器必須為未聲明constructor之classes合成一個default constructor“。C++ 標準把那些合成物稱為implicit nontrivial default constructors。被合成出來的constructor只能滿足編譯器(而非程序)的需要。它之所以能夠完成任務,是借著“調用member object 或 base class 的default constructor“ 或是 ”為每一個object初始化其virtual function 機制或virtual base class機制“而完成。至于沒有存在那四種情況而又沒有聲明任何constructor的classes,我們說它們擁有的是implicit trivial default constructors,它們實際上并不會被合成出來。
在合成出來的default constructor中,只有base class subobjects 和member class objects會被初始化。所有其它的nonstatic data memeber,如整數、整數指針、整數數組等等都不會被初始化。這些初始化操作對程序而言或許有需要,但對編譯器則并非必要。