Har*_*Bro 1 c++ visual-c++ c++11
以下代码是否生成定义的行为或未定义的行为.我在我的VC++上尝试了它,但我有一件事,但我很想知道这是不是只是说它或者它是否是c ++标准规定的.
#include <iostream>
class TestClass {
public:
char testChar;
double testDouble;
int testInt;
};
int main(int argc, char** argv) {
TestClass s = {412.1, 52};
std::cout << s.testChar + s.testDouble + s.testInt << std::endl;
}
Run Code Online (Sandbox Code Playgroud)
行为已定义,但结果可能与您的预期不符.
字段的顺序很重要.对于集合初始化每个值将初始化下一个成员中声明的顺序,所以在上面的代码,testChar将获得的值static_cast<char>(412.1),testDouble将得到的值52和testInt将获得的值0(标准保证对于没有设置值将被初始化为所有成员0.