最近,我被std :: map operator []函数搞糊涂了.在MSDN库中,它说:"如果找不到参数键值,那么它将与数据类型的默认值一起插入." 我试图更准确地搜索这个问题的解释.例如: std :: map default value 在这个页面中,Michael Anderson说"默认值是由默认构造函数(零参数构造函数)构造的".
现在我的任务是:"内置类型的默认值是什么?".编译器是否相关?或者c ++标准委员会是否有这个问题的标准?
我在visual studio 2008上对"int"类型进行了测试,发现"int"类型的构造值为0.
我一直认为创建一个新对象总是会调用一个对象的默认构造函数,而构造函数是显式的还是由编译器自动生成的没有区别.根据对这个不同问题的高度重视的答案,这在C++ 98和C++ 03之间以微妙的方式发生了变化,现在的工作原理如下:
struct B { ~B(); int m; }; // non-POD, compiler generated default ctor
new B; // default-initializes (leaves B::m uninitialized)
new B(); // value-initializes B which zero-initializes all fields since its default ctor is compiler generated as opposed to user-defined.
Run Code Online (Sandbox Code Playgroud)
谁能告诉我: