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

Default initialization in main() function

本文关键字:默认 初始化 函数 Main      更新时间:2023-10-16
#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是数组类型,则数组的每个元素都被默认为initialial; 3)否则,什么也没做:具有自动存储持续时间(及其子对象)的对象被初始化为不确定的值。

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

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

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