如果我有一个具有两个成员数据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和得到:0和10而在GCC我10和10!
因此,这样做是不确定的行为吗?
因此,这样做是不确定的行为吗?
是。读取不确定值的行为是不确定的。在此示例中,y_当其值用于初始化时具有不确定的值x_,因为它是在之后初始化的x_。之所以初始化,是x_因为成员是按照声明顺序进行初始化的。