sha*_*oth 7 c++ enums types type-safety
使用以下C++定义:
enum EnumA {
EA_Element = 1
};
enum EnumB {
EB_Element = 10
};
Run Code Online (Sandbox Code Playgroud)
以下代码将无法编译,只有有意义:
EnumA variable;
variable = EB_Element; // won't compile
Run Code Online (Sandbox Code Playgroud)
但是下面的代码确实编译了:
EnumA variable = EA_Element;
if( variable == EB_Element ) { //will compile
}
Run Code Online (Sandbox Code Playgroud)
虽然它没有任何意义 - 比较不同的枚举,这样的代码可能是错误的.
为什么这些看似相同的情况在C++中的处理方式不同?