ric*_*d.g 3 c++ initialization
在使用之前,应该正确定义和初始化每个变量(为其赋值).但是在某些情况下,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;
Run Code Online (Sandbox Code Playgroud)
结果将为零.显然,编译器做了一些事情来将变量a.val初始化为零.我很好奇他们什么时候会这样做?
http://en.cppreference.com/w/cpp/language/zero_initialization
在以下情况下执行零初始化:
- 对于具有静态或线程本地存储持续时间的每个命名变量,在任何其他初始化之前.
- 作为非类类型的值初始化(即带有一对空括号或大括号)的一部分,以及没有构造函数的值初始化类类型的成员.
- 当使用太短的字符串文字初始化字符数组时,数组的其余部分将进行零初始化.