use*_*360 5 c++ enums initialization
假设我们有:
enum X {
X1,
X2,
X3
};
int func() {
std::map<int, X> abc;
...
}
Run Code Online (Sandbox Code Playgroud)
假设0是不在容器中的键.
我知道abc [0]需要对X对象进行值初始化.
以下是问题:
(1)枚举初始化是否始终为零初始化?即abc [0]总是初始化为对应0的枚举器?
(2)如果有的话怎么办?
enum X {
X1 = 1,
...
Run Code Online (Sandbox Code Playgroud)
abc [0]会是什么?
枚举的初始化总是零初始化吗?即
abc[0]始终初始化为对应于0?的枚举器。
是的。
如果我们有怎么办
Run Code Online (Sandbox Code Playgroud)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;
}
Run Code Online (Sandbox Code Playgroud)
输出:
0 0