从其后声明的另一个成员数据中初始化成员数据是否是未定义行为?

Ale*_*x24 6 c++ oop

如果我有一个具有两个成员数据x_y_声明x_为从初始化y_y_具有一个值的类,则它x_具有一个Undefined value?或者是什么?

class Empl {
    public:
        int x_{ y_ };
        int y_{ 10 };
};

int main(){

    Empl e{};
    std::cout << e.x_ << ", " << e.y_ << std::endl;

}
Run Code Online (Sandbox Code Playgroud)

我试过例如在MSVC ++ 2105和得到:010而在GCC我1010

因此,这样做是不确定的行为吗?

eer*_*ika 7

因此,这样做是不确定的行为吗?

是。读取不确定值的行为是不确定的。在此示例中,y_当其值用于初始化时具有不确定的值x_,因为它是在之后初始化的x_。之所以初始化,是x_因为成员是按照声明顺序进行初始化的。