默认构造函数:就是没有参数的构造函数,当创建实例,并且没有参数时,编译器就会调用默认构造函数。
但是,如果用户没有给出默认构造时,会发生什么呢?以下情况,编译器会构造一个默认构造函数:
- 类中有一个成员,这个成员有默认构造函数
- 类继承自基类,基类存在默认构造函数
- 类中存在虚函数
- 类对另一个类进行了虚继承
另外,编译器生成的默认构造,只完成编译器关心的工作。例如调用成员的默认构造,或者生成虚指针,指向虚函数表。int,char*等没有默认构造的变量,编译器不会初始化它们。
所以,为了所有变量都能初始化,老老实实写默认构造函数吧。