main()函数中的默认初始化

时间:2016-06-15 03:27:00

标签: c++ initialization

#include <iostream>
using namespace std;

int main() {
    int var; // default initialization var = 0 Why?
    cout << var << endl;    
    return 0;
}

如果我理解默认初始化权限,则int变量必须是不确定的值。

  

默认初始化的效果是:   1)如果T是非POD(直到C ++ 11)类类型,则考虑构造函数并对空参数列表进行重载解析。选择的构造函数(它是默认构造函数之一)被调用以提供新对象的初始值;   2)如果T是数组类型,则数组的每个元素都是默认初始化的;    3)否则,什么都不做:具有自动存储持续时间的对象(及其子对象)被初始化为不确定值。

那么,为什么int var在这种情况下等于0?

1 个答案:

答案 0 :(得分:1)

您的理解是正确的。 var此处包含垃圾值,恰好是0

垃圾值不一定是某些看似随机的值,通常它是恰好在该内存中的值。再次运行程序,或更改不同的编译器,可能会看到不同的结果。