7.5.3默认构造函数的作用
- 一、 默认初始化发生的条件:
- 块作用域不使用任何初始值定义一个非静态变量或数组。
- 一个类本身含有类类型的成员且使用合成的默认构造函数(即编译器创建的构造函数)。
- 类类型的成员没有在构造函数初始列表中显示的初始化。
- 二、值初始化发生的条件:
- 数组初始化过程中,提供的初始值数量少于数组大小。
- 不使用初始值定义一个局部静态变量。
- 通过书写形如T()显示的请求值初始化(例如 vector vec(10);)。
-
三、当对象被默认初始化或值初始化时自动执行默认构造函数。
-
四、使用默认构造函数
如果向定义一个想使用默认构造函数的对象,应该用去掉对象的空括号对。
T obj(); //错误:声明了一个函数而非对象
T obj2; //正确:是一个对象而非函数
T obj3 = {}; //正确:进行值初始化