C++ 初始化枚举,就像初始化类以避免强制转换一样

C++ 初始化枚举,就像初始化类以避免强制转换一样,c++,C++,今天我发现了一些以前从未见过的语法 enum MyEnum{ FOO = 0, ABA, DADA, } .... MyEnum test; std::uint8_t some_number(3); test = MyEnum(some_number); 这里到底发生了什么?枚举将被视为类?还是这只是演员阵容 test = MyEnum(some_number); 这里的some_number显式转换为枚举类型。除非值在枚举范围内,否则这种转换的结果是未定义的。MyEn

今天我发现了一些以前从未见过的语法

enum MyEnum{    FOO = 0,    ABA,    DADA, }
....

MyEnum test;
std::uint8_t some_number(3);

test = MyEnum(some_number);
这里到底发生了什么?枚举将被视为类?还是这只是演员阵容

test = MyEnum(some_number);

这里的
some_number
显式转换为枚举类型。除非值在枚举范围内,否则这种转换的结果是未定义的。

MyEnum声明为具有三个值:

FOO: 0
ABA: 1
DADA: 2

std::uint8\t
一些编号
被初始化为值
3
。然后将此值转换为
MyEnum
值。因为不存在从值
3
MyEnum
值的映射,所以在
test

中可能会得到一个未定义的
Enum
值,当
T
是一个类型时,
T(x)
(T)x
相同。枚举是整数类型,所以它们可以转换。所以这只是一个旧的C样式转换?是的,它只是一个转换。