C++11中POD的构造函数要求
Constructor requirements in C++11 for POD
可能重复:
什么是聚合和POD,它们是如何/为什么特别的?
C++11中的结构体需要什么样的构造函数才能将该结构体保持为POD?
是否只接受初始值设定项列表?或者可能没有任何限制?
您需要一个默认的默认构造函数,这样它就很简单了:
struct pot
{
constexpr pot() noexcept = default;
pot(int a, float b) : x(a), y(b) { }
int x;
float y;
};
constexpr
和noexcept
是可选的,但我们也可以。
用法:
pot p; // OK
pot q(1, 1.5); // also OK
相关文章:
- "error: no matching function for call to"构造函数错误
- 如果C++类在类方法中具有动态分配,但没有构造函数/析构函数或任何非静态成员,那么它仍然是POD类型吗
- C++定义构造函数使对象成为非 POD
- 我可以说服自动生成的构造函数将我的 POD 类成员归零吗?
- 在不使用默认构造函数的情况下声明 POD 结构时,会实例化什么?
- 初始化新对象时C++默认构造函数和 POD 问题
- 为什么具有已删除复制构造函数的结构不是 POD 类型
- 构造函数初始化列表中POD类型的初始化
- 非 pod 类型的布局(因为具有默认构造函数)
- 默认的构造函数和POD
- C++11中POD的构造函数要求
- 具有用户定义构造函数的普通和 POD 类型
- POD 类对象初始化是否需要构造函数
- (POD)结构上是否需要移动构造函数
- 默认构造函数、POD初始化和C++11中的隐式类型转换
- 对空的用户定义构造函数将如何初始化非静态非 POD 成员变量感到困惑
- 复制非POD类型的构造函数和普通构造函数
- 迭代器默认构造函数和POD成员初始化
- 从POD结构继承的类中默认构造函数的奇怪行为
- 在POD中强制默认初始化构造函数