通常说,在一个类的定义中,如果没有定义任何构造函数,编译器会隐式生成一个默认的构造函数,称这种构造函数为“合成默认构造函数”。实际上,只有在必要的时候,编译器才会为程序合成构造函数,不是必须。
以下为合成默认构造函数的情况
类中没有任何构造函数
包含一个类类型的成员变量
类成员变量的类结构中,有默认的构造函数
此时生成构造函数的目的,是为了在生成的默认构造函数中,自动增加代码,调用类成员变量的默认构造函数
类继承,且父类带有默认的构造函数
子类没有任何构造函数
当创建子类对象是,父类的默认构造函数是要被调用的,因此编译器会为子类生成默认构造函数,在其中自动增加代码,来调用父类的默认构造函数
类中含有虚函数
类没有任何构造函数
当类中有虚函数,则会自动生产虚函数表。默认构造函数,用于把虚函数表的地址,赋值给对象的虚函数表指针。
类带有虚基类
定义类成员变量的时候赋初值