【发布时间】:2013-08-23 16:53: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;
}
【问题讨论】:
-
这不只是 POD 初始化(有一个奇怪的 char(412))吗!?
-
@DieterLücking:这个术语是 aggregate-initialization 但是是的,这是大多数人在 C++03 中理解为 POD-initialization 的意思.在 C++11 中,情况发生了变化,POD 与以前完全不同(所有 C++03 POD 类型都是 C++11 POD 类型,但有一些 C++11 POD 类型不是有效的 C ++03 POD 类型[成员可以是私有的],对于那些你不能使用 aggregate-initialization)
标签: c++ visual-c++ c++11