1.带有Default Constructor的Member Class Object: 合成出来的default constructor主要是为了能够调用 Member Class Object的default Constructor
2.带有Default Constructor的Base Class: 合成出来的default Constructor主要是为了能够调用Base Class的default Constructo。
注:Constructor调用顺序是 先调用Base Class的Constructor,再调用Member Object的Constructor,最后调用自身的Constructor。析构函数调用顺序相反。
3.带有一个Virtual Function的Class:合成出来的default Constructor主要是为了能够正确的初始化每一个Class Object的vptr
4.带有一个Virtual Base Class的class:合成出来的default Constructor主要是为了编译器能安插那些“允许每一个 Virtual Base Class的执行期存取操作”的代码。(这里没明白是怎么回事)
常见误区:
1. 任何class如果没有定义default Constructor,就会被合成出一个来。
2. 编译器合成出来的default Constructor会显示设定class内每一个data member的默认值。