继承的 POD 类型的值初始化
Value initialization of inherited POD types
假设如下:
struct POD1 { int a; };
struct POD2 : POD1 { int b; };
int main() {
POD2 p2 = POD2();
return 0;
}
定义 p2
后,p2.a
和 p2.b
都会等于 0 吗?基本上,我不确定值初始化规则是否也适用于 POD 类型的基类。
POD2 p2();
这不会做你所期望的,而是声明一个名为 p2
的函数,该函数不带参数并返回POD2
。
现在,一个稍微不同的情况是:
POD2 p2 = POD2();
表达式的右侧 POD2()
表示创建值初始化的临时 [5.2.3/2]。没有用户定义构造函数的用户定义类型的值初始化是零初始化 [8.5/7],该类型的零初始化将零初始化每个成员和基 [8.5/5],保证两个成员均为 0。
相关文章:
- 如何在 malloc 内存中初始化非 POD 数据
- 使用 std::index_sequence 初始化具有固定大小数组成员的 POD 结构容器
- 非 POD 的零初始化
- 如何让MSVC编译器优化多步POD初始化?
- 默认情况下初始化时 POD 是否给予特殊处理 (C++14)?
- 类POD成员变量初始化
- C++函数中的多线程静态 POD 初始化
- 初始化新对象时C++默认构造函数和 POD 问题
- POD成员默认初始化无括号
- 视觉C++似乎正在零初始化一个不应该的类的 POD 成员
- 如何在派生类中初始化继承的模板POD结构
- 构造函数初始化列表中POD类型的初始化
- 使用初始化列表的 POD 类型初始化不起作用
- 继承的 POD 类型的值初始化
- 初始化POD数组中的第一个元素,保持其余元素未初始化
- POD变量的直接初始化不起作用,但当将变量推到向量上时,复制初始化起作用
- POD 类对象初始化是否需要构造函数
- 为什么在初始化项列表中初始化 POD 数据时必须使用 C 样式类型转换
- 如何使用C++中的括号语法初始化POD数组
- 获取默认初始化(NOT value/零初始化)POD作为右值