我一直认为下面的代码
std::map<int, int> test;
std::cout << test[0] << std::endl;
将打印随机值,因为它会在地图中创建统一值。然而,事实证明,创建的 int 实际上总是被初始化为零并且标准内置类型在某些情况下也被初始化为零。
问题是:什么时候对标准类型(int/char/float/double/size_t)执行零初始化?我很确定,如果我int i;
在不知名的地方声明,它将包含随机数据。
PS 这个问题是关于 C++03 标准的。问题的原因是,现在我不再确定何时必须为 int/float/size_t 等内置类型提供初始化,或者何时可以安全地省略它。