7.5.3默认构造函数的作用

  • 一、 默认初始化发生的条件:
  1. 块作用域不使用任何初始值定义一个非静态变量或数组。
  2. 一个类本身含有类类型的成员且使用合成的默认构造函数(即编译器创建的构造函数)。
  3. 类类型的成员没有在构造函数初始列表中显示的初始化。
  • 二、值初始化发生的条件:
  1. 数组初始化过程中,提供的初始值数量少于数组大小。
  2. 不使用初始值定义一个局部静态变量
  3. 通过书写形如T()显示的请求值初始化(例如 vector vec(10);)。
  • 三、当对象被默认初始化或值初始化时自动执行默认构造函数。

  • 四、使用默认构造函数

    如果向定义一个想使用默认构造函数的对象,应该用去掉对象的空括号对。

	T obj();   //错误:声明了一个函数而非对象
	T obj2;    //正确:是一个对象而非函数
	T obj3 = {}; //正确:进行值初始化