以下代碼是否會產生已定義的行爲或未定義的行爲。我在我的VC++上試了一下,我得到了一件事,但我很好奇,看看這是否只是coincendence,或者它是由C++標準強制的。在聚合初始化中,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;
}
是不是隻是POD初始化(有一個奇怪的字符(412))!?? –
@DieterLücking:術語是*聚合初始化*但是,這是大多數人會理解爲C++ 03中的* POD-initialization *在C++ 11中,事物的變化和POD與以前完全不同(所有的C++ 03 POD類型都是C++ 11 POD類型,但在那裏是一些C++ 11 POD類型,它們是無效的C++ 03 POD類型[成員可以是私有的],fo r那些你不能使用* aggregate-initialization *) –