相关疑难解决方法(0)

std :: map内置类型的默认值

最近,我被std :: map operator []函数搞糊涂了.在MSDN库中,它说:"如果找不到参数键值,那么它将与数据类型的默认值一起插入." 我试图更准确地搜索这个问题的解释.例如: std :: map default value 在这个页面中,Michael Anderson说"默认值是由默认构造函数(零参数构造函数)构造的".

现在我的任务是:"内置类型的默认值是什么?".编译器是否相关?或者c ++标准委员会是否有这个问题的标准?

我在visual studio 2008上对"int"类型进行了测试,发现"int"类型的构造值为0.

c++ stdmap default-value

27
推荐指数
4
解决办法
2万
查看次数

C++ 03中default-initialize和value-initialize之间的区别?

我一直认为创建一个新对象总是会调用一个对象的默认构造函数,而构造函数是显式的还是由编译器自动生成的没有区别.根据对这个不同问题的高度重视的答案,这在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)

谁能告诉我:

  1. 为什么标准发生了变化,即这给了什么优势,或者现在可能有什么优势;
  2. "default-initialize"和"value-initialize"这两个术语是什么意思?
  3. 该标准的相关部分是什么?

c++ standards default-value default-constructor

8
推荐指数
1
解决办法
1672
查看次数