2.2.13 进一步理解初始化
2025年2月21日大约 1 分钟
在前文,我们提到初始化的概念,声明并初始化的语法结构是:类型 标识符 初始化器;
之前我们认为初始化器是= 字面量
,例如int a = 42;
,= 42
就是初始化器。现在,我们可以进一步理解初始化器,初始化器可以是= 赋值表达式
。例如:
int a = 42;
int b = 42 + a;
这里b的初始化器是= 42 + a
,这个初始化器是= 表达式
,这个生命会将b
指代的对象初始化为42 + a
的值。
初始化器中能出现赋值表达式(当然也因此而包括了赋值表达式所有的组件)。这意味着下列代码是符合语法的:
int a = 42;
int b = a = 24;
此外,由于初始化器是= 赋值表达式
,所以初始化器中不能出现逗号表达式。初始化器中的逗号有另外的含义,例如:
int a = 42, b = 24;
这里的逗号不是逗号表达式,而是分隔了两个声明。这里分别声明了a
和b
,并分别初始化为42
和24
。
我们可以把以下两种形式统称为初始化声明
标识符
标识符 = 赋值表达式
那么,初始化就可以理解为
类型 初始化声明 , 初始化声明 , 初始化声明 ... ;
这样的结构,到此已经基本接近了完整的 C++ 初始化语法。