有两个常见的误解: 1.任何类如果没有定义默认构造函数,就会被合成出一个来. 2.编译器合成的默认构造函数会显式地设定类内每一个数据成员的默认值. 对于第一个误解,并不是任何类在没有显式定义默认构造函数时都会被编译器合成一个默认构造函数. 在以下4种情况下,编译器才会合成默认构造函数,以满足编译器自己的需求(并不是为了满足程序的需求). 一.父类有默认构造函数(default constructor) 如果一个没有任何构造函数的类派生自 “一个有默认构造函数的” 父类,那么这个派生类的默认构造函…