默认初始化
这是在不使用初始化器构造变量时执行的初始化使用初始化器进行初始化
按照语境,初始化器可以调用:值初始化,例如 std::string s{};
这是在变量以空初始化器构造时进行的初始化。直接初始化,例如 std::string s(“hello”);
从构造函数参数的显式集合初始化对象复制初始化,例如 std::string s = “hello”;
从另一对象初始化对象列表初始化,例如 std::string s{‘a’, ‘b’, ‘c’};
从花括号初始化器列表初始化对象聚合初始化,例如 char a[3] = {‘a’, ‘b’};
从花括号初始化器列表初始化聚合体
聚合初始化是一种初始化聚合体的列表初始化引用初始化,例如 char& c = a[0];
绑定引用到对象
包括左值引用的初始化和右值引用的初始化静态初始化
- 若受允许,则首先发生常量初始化(这些情形见常量初始化)。 实践上,常量初始化通常在编译期进行,而预计算的对象表示作为程序映像的一部分存储。若编译器没有这么做,则亦保证此初始化发生先于任何动态初始化。
- 对于所有其他 非局部 静态 及 线程局域变量 ,发生零初始化。 实现中,要被零初始化的变量置于程序映像的 .bss 段,它不占据磁盘空间,并在加载程序时为操作系统以零填充。
1 |
|