编译器何时生成默认构造函数?
编译器生成的构造函数只适用于编译器的正确性,类内的数据初始化不由编译器负责!
- 如果一个class内部含有一个成员对象,并且这个对象有默认构造函数,那么编译器就会为这个class生成默认构造函数。
- 此class继承自一个含有默认构造函数的基类。
- 带有virtual function的Class或者继承了一个含有virtual fuction的父类。
- 使用了虚继承的类。
存在两个误解: - 任何class如果没有定义默认构造,编译器会生成。(错,编译器只会在需要的时候生成)
- 编译器生成的默认构造会明确初始化。(错,编译器不会初始化成员变量,这是程序设计者的活!)