std :: map枚举的默认值

时间:2015-04-22 21:43:47

标签: c++ enums initialization

让我们说:

enum X {
  X1,
  X2,
  X3
};

int func() {
  std::map<int, X> abc;
  ...
}

假设0是容器中没有的键。

我知道abc [0]需要对X对象进行值初始化。

以下是问题:

(1)初始化始终是枚举的零初始化吗?即abc [0]始终被初始化为对应于0?

的枚举器

(2)如果我们有什么

enum X {
  X1 = 1,
...

abc [0]会是什么?

1 个答案:

答案 0 :(得分:1)

  

初始化始终是枚举的零初始化吗?即abc[0]始终初始化为与0对应的枚举器?

  

如果我们有

怎么办?
enum X {
   X1 = 1,
   ...
     

abc[0]会是什么?

它将是0

工作计划(也可以在http://ideone.com/RVOfT6看到):

#include <iostream>
#include <map>

enum X {
  X1,
  X2,
  X3
};

int main()
{
   X x = {};
   std::map<int, X> abc;
   std::cout << x << std::endl;
   std::cout << abc[0] << std::endl;
}

输出:

0
0
相关问题