我一直以为下面的代码
std::map<int, int> test;
std::cout << test[0] << std::endl;
将打印随机值,因为它会在地图内创建统一值。然而,事实证明,created int 实际上总是初始化为零,并且标准内置类型在某些情况下也初始化为零。
问题是:标准类型(int/char/float/double/size_t)何时执行零初始化?我很确定如果我声明int i;
在不知名的地方,它将包含随机数据。
附:问题是关于C++03标准的。提出这个问题的原因是,现在我不再确定何时have为 int/float/size_t 等内置类型提供初始化,或者可以安全地省略它。
标准集装箱(map
, vector
等...)将永远值初始化他们的元素。
大致说来,值初始化 is:
(有人会说,两全其美)
语法很简单:T t = T();
将进行值初始化t
(and T t{};
在 C++11 中)。
当你使用map<K,V>::operator[]
,该对的“值”部分是值初始化的,对于内置类型会产生0
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)