我一直以为代码如下
std::map<int, int> test;
std::cout << test[0] << std::endl;
Run Code Online (Sandbox Code Playgroud)
会打印随机值,因为它会在map中创建单位化值.但是,事实证明,创建的int实际上总是初始化为零,并且标准内置类型在某些情况下也是零初始化的.
问题是:当对标准类型(int/char/float/double/size_t)执行零初始化时?我很确定,如果我int i;在不知名的地方宣布,它将包含随机数据.
PS问题是关于C++ 03标准.问题的原因是,现在我不再确定何时必须为内置类型(如int/float/size_t)提供初始化,或者可以安全地省略它.
标准容器(map,vector等等)将始终对其元素进行初始化.
粗略地说,值初始化是:
(有人会说,两全其美)
语法很简单:T t = T();将初始化值t(T t{};在C++ 11中).
当您使用时map<K,V>::operator[],该对的"值"部分是值初始化的,对于内置类型产生0.
| 归档时间: |
|
| 查看次数: |
1629 次 |
| 最近记录: |