POD类型

POD类型

POD全称Plain Old Data。通俗的讲,一个类或结构体通过二进制拷贝后还能保持其数据不变,那么它就是一个POD类型。

C++11将POD划分为两个基本概念的合集,即:平凡的和标准布局的。

平凡的定义

  1. 有平凡的构造函数
  2. 有平凡的拷贝构造函数
  3. 有平凡的移动构造函数
  4. 有平凡的析构函数
  5. 有平凡的拷贝赋值运算符
  6. 有平凡的移动赋值运算符
  7. 不能含有虚函数
  8. 不能包含虚基类

标准布局的定义

  1. 所有非静态成员有相同的访问权限
  2. 继承树中最多只能有一个类有非静态数据成员
  3. 子类的第一个非静态成员不可以是基类类型
  4. 没有虚函数
  5. 没有虚基类
  6. 所有非静态成员都符合标准布局类型

当一个数据类型满足了”平凡的定义“和”标准布局“,我们则认为它是一个POD数据。可以通过std::is_pod来判断一个类型是否为POD类型。

参考文献

C++11:POD数据类型

新战场:https://blog.csdn.net/Stephen___Qin
原文地址:https://www.cnblogs.com/Stephen-Qin/p/9121708.html