值初始化
int型初始化为0,string初始化为空串。
(1)在数组初始化的过程中,如果提供的初始值数量少于数组的大小,剩下的元素会进行值初始化;
(2)当我们不使用初始值定义一个局部静态变量时;
(3)当我们通过书写形如T()的表达式显示地请求值初始化时;
默认初始化
定义变量时没有指定初始值,默认值到底是什么由类型决定,跟定义的位置也有关系。
函数体之外的被定义成0,定义在块作用域内部的内置变量,值是未定义的。不能直接使用
(1)当我们在块作用域内不使用任何初始值定义一个非静态变量时,
(2)当一个类本身含有类类型成员且使用合成的默认构造函数时;
(3)当类类型的成员没有在构造函数初始值列表中显示地初始化时;
一个类对象进行默认初始化和值初始化,必须要有相应的默认构造函数。
聚合类,可以使用花括号括起来的成员初始化列表
所有成员public,没有定义任何构造函数,没有类内初始值,没有基类,没有虚函数。
通常情况类的静态成员不应该在类的内部初始化。除了const static或者constexpr static不需要分别定义。
即使常量静态数据成员在类内被初始化了,也应该在类外部定义一下该成员。
C/C++基础----string, vector, array类
原文地址:https://www.cnblogs.com/logchen/p/9576336.html