Mis*_*ody 5 c++ enums variable-initialization variable-declaration
这是我的小程序:
enum Type
{
b = 1,
c = 2
};
int main()
{
Type b = b;
std::cout << b << std::endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
哪个输出0.我可以得出结论,上述定义包含这些连续步骤吗?
b为变量的类型Type0默认值定义该变量和初始化并且,变量是否始终用0初始化,即使它们是显式初始化的?
我的第二个问题是 - 如果它在指定的例子中使用了它的初始化列表中的变量,为什么我不会得到关于歧义的错误?编译器是否首先尝试b在变量列表中查找,然后才检查声明的枚举?
第1步是正确的,但其余的都是错误的.会发生什么b是定义变量并立即初始化为变量的值b.这会导致未定义的行为,因为b在它自己的初始化中使用它之前没有初始化.
如果你想将它初始化为Type::b那么你需要明确地写出:
Type b = Type::b;
Run Code Online (Sandbox Code Playgroud)