109、什么情况会自动生成默认构造函数?

1) 带有默认构造函数的类成员对象,如果一个类没有任何构造函数,但它含有一个成员对象,而后者有 默认构造函数,那么编译器就为该类合成出一个默认构造函数。

不过这个合成操作只有在构造函数真正被需要的时候才会发生;

如果一个类A含有多个成员类对象的话,那么类A的每一个构造函数必须调用每一个成员对象的默认构造 函数而且必须按照类对象在类A中的声明顺序进行;

2) 带有默认构造函数的基类,如果一个没有任务构造函数的派生类派生自一个带有默认构造函数基类, 那么该派生类会合成一个构造函数调用上一层基类的默认构造函数;

3) 带有一个虚函数的类

4) 带有一个虚基类的类

5) 合成的默认构造函数中,只有基类子对象和成员类对象会被初始化。所有其他的非静态数据成员都不 会被初始化。

原文地址:https://www.cnblogs.com/crbhf/p/15004623.html