编译器必须为未声明constructor 之classes 合成一个default constructor
1.带有default constructor 的 member class object.
2.带有default constructor 的 base class object.
3.带有virtual Function 的class
1.如:
1) class 声明(或继承)一个virtual function.
2) class 派生自一个继承串链,其中有一个或更多的virtual base classes.
2.在编译期间会扩张操作
1.一个virtual function table(vtbl)会被编译器产生出来,内放class 的virtual functions 地址
2.在每一个class object 中,一个额外的pointer member(vptr)会被编译器合成出来,内含相关的class vtbl 的地址。
4.带有一个virtual base class 的class
在合成的default constructor 中,只有base class subobjects和member class objects会被初始化,所有其他的nonstatic data member,如整数,整数指针,整数数据等等都不会被初始化.