被合成物称为implicit nontrivial default constructor。被合成出来的Constructor只能满足编译器(而非程序)的需求,它之所以能够完成任务,是借着”调用member object或base class的default Constructor“或者”为每一个object初始化其virtual function机制或virtual base class机制“而完成。在合成的default constructor中,只有base class subobjects和member class objects会被初始化。所有其他的nonstatic data membe,如整数、整数指针、整数数组等等都不会被初始化。
1、带有“Default Constructor”的Member Class Object:
2、带有“Default Constructor”的Base Class;
3、带有一个"Virtual Function"的Class;
4、带有一个"Virtual Base Class"的Class;
至于没存在这四种情况而没有声明任何Constructor的classes,我们说他们拥有的是implicit trivial default constructor,它们实际上并不会被合成出来。
--《Inside The C++ Object Model》