最早看到POD(plain old data)类型,是在imperfect c++里。我觉得这是一本把我带到c++世界里的一本很重要的书。

书里是这样解释POD的:

1、   所有标量类型(基本类型和指针类型)、POD结构类型、POD联合类型、以及这几种类型的数组、const/volatile修饰的版

本都是POD类型。

2、 POD结构/联合类型:一个聚合体(包括class),它的非static成员都不是pointer to class member、

pointer to class member function、非POD结构、非POD联合,以及这些类型的数组、引用、const/

volatile修饰的版本;

并且,此聚合体不能有用户自定义的构造函数、析构函数、拷贝构造函数.

3、 POD类型可以具有static成员、成员typedef、嵌套struct/class定义和 成员函数/方法。

(C++标准)给出的定义:

将对象的各字节拷贝到一个字节数组中,然后再将它重新拷贝到原先的对象所占的存储区中,此时该对象应该具有它原来的值。

POD类型的特点:

所有POD类型都可以作为union的成员,反之,所有非POD类型都不能作为union的成员。

POD特性利用:

我们可以利用POD类型特性来判断一个类型是否为POD类型:

template<class T> struct must_be_pod

{

union

{

T noname;

};

};

这个模板的意思是,只要类型T是非POD类型,那么编译器将报错,因为T被作为了union的一个成员。

VS2008里的测试代码如下:

class A

{

public:

A(){}

void f() { cout << "A::F" << endl; }

protected:

private:

int i;

int j;

};

template<class T> struct must_be_pod

{

union

{

T noname;

};

};

must_be_pod<A> a; 编译器会报错:1>member 'must_be_pod<T>::noname' of union 'must_be_pod<T>::<unnamed-tag>' has user-defined constructor or non-trivial default constructor

其实POD本质就是与c兼容的数据类型。

c++中的pod类型相关推荐

  1. 【C/C++ POD 类型】深度解析C++中的POD类型:从理论基础到项目实践

    深度解析C++中的POD类型:从理论基础到项目实践 1. C++中的POD类型(Plain Old Data) 1.1 POD类型的定义和特性 Trivial类型 Standard layout类型 ...

  2. C ++中的POD类型是什么?

    我有几次遇到这个术语POD型. 这是什么意思? #1楼 POD代表普通旧数据 - 即没有构造函数,析构函数和虚拟成员函数的类(无论是使用关键字struct还是关键字class ). 维基百科关于POD ...

  3. C++11中的POD和Trivial

    引子 在介绍C++11的文章或者博客中,经常会出现POD类型和Trivial类型的影子.但是POD类型和Trivial类型到底是什么意思呢? POD类型 POD类型的好处 POD类型 粗略上来讲,PO ...

  4. C++中的trivial和non-trivial构造/析构/拷贝/赋值函数及POD类型

    在侯捷的<STL源码剖析>里提到trivial和non-trivial及POD类型,相关知识整理如下. trivial意思是无意义,这个trivial和non-trivial是对类的四种函 ...

  5. C++ 11 中的POD

    POD 是英文中Plain Old Data 的缩写,意如其名. Plain 表示了POD 是普通的类型, C++中常见的类型都是这样的属性,而不像一些存在着虚函数虚继承的类型那么特别. Old 则体 ...

  6. Kubernetes 中创建 Pod 时集群中到底发生了些什么?

    想象一下,如果我想将 nginx 部署到 Kubernetes 集群,我可能会在终端中输入类似这样的命令: $ kubectl run --image=nginx --replicas=3 然后回车. ...

  7. C++11 POD类型

    POD,全称plain old data,plain代表它是一个普通类型,old代表它可以与c兼容,可以使用比如memcpy()这类c中最原始函数进行操作.C++11中把POD分为了两个基本概念的集合 ...

  8. C++11的POD类型

    POD类型的定义 必须是平凡的和有标准布局的. 平凡的构造函数与析构函数是默认的,不起任何作用的.如果自定义了,那么需要声明为default类型的. 使用std::is_trivial进行判别. 标准 ...

  9. dns提供商主机名_在 Kubernetes 中使用 DNS 和 Headless Service 发现运行中的 Pod

    作者:Mattias te Wierik 翻译:Bach(才云) 校对:星空下的文仔(才云).bot(才云) 在 Kubernetes 集群中,Service 是将运行在一组 Pods 上的应用程序公 ...

最新文章

  1. Pjax是什么以及为什么推荐大家用
  2. CentOS7中使用Docker安装SVN以及配置账号权限
  3. 基于CDS view生成的OData服务的metadata是如何加载的
  4. Hibernate基本概念
  5. kubernetes系列10—存储卷详解
  6. Explorer.exe程序在系统中的作用
  7. 如何使用Python Flask编写Web服务
  8. Python 进阶 —— 装饰器函数的使用
  9. (转)关于oracle表空间的规划方法
  10. CSP2019普及组题解:公交换乘(C++)
  11. 中国移动--九天毕昇平台使用测试(薅Telsa V100)
  12. php期末大作业可以做什么,期末要交一个基于php连入数据的大作业
  13. 什么是适用于iPhone和iPad的iOS最新版本?
  14. JavaScript 隐式类型转换
  15. 【软件测试】面试老约不到?软件测试简历项目经验怎么写?论项目经验的重要性......
  16. 需要安装Directx9.0c以上版本和最新显卡驱动
  17. 清理完c盘计算机无法重启,电脑的c盘被清理,随后就关机后,在打开,就打不开了,...
  18. DataPipeline宣布完成数千万元B轮融资,加速构建中国的世界级数据中间件产品
  19. vue 3D地球 转动
  20. 【Smooth L1 Loss】Smooth L1损失函数理解

热门文章

  1. 方法引用_通过类名引用静态成员方法
  2. SpringBoot_web开发-webjars静态资源映射规则
  3. 内存溢出与内存泄漏区别
  4. 非阻塞同步算法与CAS(Compare and Swap)无锁算法
  5. zsh和bash的切换,默认shell,alias拼接组合多条命令
  6. head first servlet jsp 学习笔记
  7. AlarmManager机制和系统唤醒锁的总结
  8. NSUserDefaults数据保存使用
  9. 牛客 - 焦糖布丁(线性基+博弈)
  10. 兰州大学第一届『飞马杯』程序设计竞赛 - ★★飞马祝福语★★(动态dp)