【何时会生成default constructor?】
1、带有"Default Constructor"的Member Class Object。
对于Class Object成员,编译器默认会调用此成员的默认构造函数。那么在哪调呢?答案是本对象的默认构造函数。所以编译器会生成Default Constructor。
2、带有"Default Constructor"的Base Class。
对于继承的情况,编译器默认会调用此类父类的默认构造函数。同上,在本对象的默认构造函数里调,所以需要生成Default Constructor。
3、带有"Virtual Function"的Class。
对于带virtual function的类,编译器会设置相应的v_ptr。同上,在本对象的默认构造函数里调,所以需要生成Default Constructor。
4、 带有"Virtual Base Class"的Class。
此情况同3类似。
【default constructor会做什么?】
1.调用这个对象的构造函数(只会调用默认构造函数,如果找不到,则会编译错误)
2.调用基类的构造函数
3.设置正确的虚函数表指针
4.设置指向虚基类对象的指针