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