变量初始化是什么意思

What does variable initialization mean

本文关键字:意思 是什么 初始化 变量      更新时间:2023-10-16

我正在阅读c++标准,我遇到了(3.3.2/2)行:

int x=x;

在这个例子中,x用它自己的(Indeterminate)值初始化。在这种情况下,x是否初始化?

如果在所有检查都打开的情况下在VS中运行这段代码,你会得到一个运行时错误

运行时检查失败#3 -变量'x'未初始化就被使用了

初始化过程(粗略地)为对象赋值。当你使用对象本身时,你是在使用未初始化的内存来初始化内存

关于初始化本身,我推荐第8.5章:

声明器可以为被声明的标识符指定一个初始值。标识符指定要初始化的变量。8.5其余部分中描述的初始化过程也适用于其他语法上下文指定的初始化,例如带实参表达式的函数形参的初始化(5.2.2)或返回值的初始化。(……)

和12.6:

12.6 Initialization [class.init]

  1. 如果没有为类类型(可能是cv限定的)的对象(或其数组)指定初始化项,或者初始化项具有()的形式,则按8.5中指定的方式初始化对象。

  2. 类类型的对象(或其数组)可以显式初始化;参见12.6.1和12.6.2。

  3. 当一个类对象数组被初始化(显式或隐式)并且元素被构造函数初始化时,应该按照下标顺序为数组的每个元素调用构造函数;看到8.3.4。注意:数组元素的析构函数的调用顺序与构造顺序相反。

12.6.1类类型的对象可以用括号括起来的表达式列表进行初始化,其中表达式列表被解释为调用构造函数初始化对象的参数列表。或者,可以使用初始化的=形式将单个赋值表达式指定为初始化式。直接初始化语义或复制初始化语义都适用;见8.5。(……)