【发布时间】:2011-08-04 23:56:02
【问题描述】:
什么标题,假设我有这样的地图:
std::map<int, int> m;
如果我写以下内容
cout<<m[4];
- 结果是什么(0,未初始化,特定于编译器)?
- 是否同样适用于指针(即 std::map)?
编辑:
澄清一下,在这个问题中,我正在寻求标准行为。
提前致谢, 水泥
【问题讨论】:
什么标题,假设我有这样的地图:
std::map<int, int> m;
如果我写以下内容
cout<<m[4];
编辑:
澄清一下,在这个问题中,我正在寻求标准行为。
提前致谢, 水泥
【问题讨论】:
该值将是该类型的默认构造函数创建的值,因为使用T() 填充新点。对于int,这是0。你可以自己看看:
#include <iostream>
using namespace std;
int main() {
cout << int() << endl; // prints 0
}
像这样用空括号初始化类型称为值初始化(请参阅下面的 ildjarn 评论)。
【讨论】:
0。
T_ x;,它们插入T_(),这是对新对象进行值初始化。