2

假设如下:

struct POD1 { int a; };
struct POD2 : POD1 { int b; };

int main() {
    POD2 p2 = POD2();
    return 0;
}

定义后两者都p2.a等于p2.b0吗?p2基本上我不确定值初始化规则是否也适用于 POD 类型的基类。

4

1 回答 1

4

POD2 p2();

这并不符合您的期望,而是通过名称声明一个p2不带参数并返回 a的函数POD2

现在,稍微不同的情况是:

POD2 p2 = POD2();

表达式的右侧POD2()表示创建一个值初始化的临时值[5.2.3/2]。没有用户定义构造函数的用户定义类型的值初始化零初始化[8.5/7],并且该类型的零初始化零初始化每个成员和基数 [8.5/5] 保证两个成员为 0。

于 2012-09-18T19:06:21.283 回答