C++在什么情况下会将变量初始化为零? [复制]

2024-03-10

每个变量在使用之前都应该正确定义和初始化(为其赋值)。然而在某些情况下,C++ 会将变量设置为默认值零。就像下面这个例子。

class A{
    ...
    static int val;
    ...};

//int val = 10; //This is the usual definition.
int val;//Definition without assigning a value.
...
A a;  //a class A object
std::cout<<a.val;

结果将为零。显然,编译器做了一些事情来将变量 a.val 初始化为零。我很好奇他们一般什么时候会这样做?


http://en.cppreference.com/w/cpp/language/zero_initialization http://en.cppreference.com/w/cpp/language/zero_initialization

零初始化在以下情况下进行:

  1. 对于每个具有静态或线程本地存储持续时间的命名变量,在任何其他初始化之前。
  2. 作为...的一部分值初始化 http://en.cppreference.com/w/cpp/language/value_initialization (即带有一对空括号或大括号) 用于非类类型和没有构造函数的值初始化类类型的成员的序列。
  3. 当使用太短的字符串文字初始化字符数组时,数组的其余部分将被初始化为零。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C++在什么情况下会将变量初始化为零? [复制] 的相关文章

随机推荐