POD类型
POD类型
POD全称Plain Old Data。通俗的讲,一个类或结构体通过二进制拷贝后还能保持其数据不变,那么它就是一个POD类型。
C++11将POD划分为两个基本概念的合集,即:平凡的和标准布局的。
平凡的定义
- 有平凡的构造函数
- 有平凡的拷贝构造函数
- 有平凡的移动构造函数
- 有平凡的析构函数
- 有平凡的拷贝赋值运算符
- 有平凡的移动赋值运算符
- 不能含有虚函数
- 不能包含虚基类
标准布局的定义
- 所有非静态成员有相同的访问权限
- 继承树中最多只能有一个类有非静态数据成员
- 子类的第一个非静态成员不可以是基类类型
- 没有虚函数
- 没有虚基类
- 所有非静态成员都符合标准布局类型
当一个数据类型满足了”平凡的定义“和”标准布局“,我们则认为它是一个POD数据。可以通过std::is_pod来判断一个类型是否为POD类型。
参考文献
新战场:https://blog.csdn.net/Stephen___Qin