C++ POD ~ plain data structure
来源:互联网 发布:c语言判断完全数 编辑:程序博客网 时间:2024/05/21 17:56
1 ,POD 定义
Plain old data structure, 缩写为POD, 是C++语言的标准中定义的一类数据结构[1],POD适用于需要明确的数据底层操作的系统中。POD通常被用在系统的边界处,即指不同系统之间只能以底层数据的形式进行交互,系统的高层逻辑不能互相兼容。比如当对象的字段值是从外部数据中构建时,系统还没有办法对对象进行语义检查和解释,这时就适用POD来存储数据。
2 ,POD类型
POD类型包括下述C++类型,以及其cv_qualified的类型。(const voliate修饰的类型)。还有以其为基类型的数组类型
1,标量类型(scalar type)
2,POD类类型(POD class type)
标量类型
术语标量类型包括下述C++类型范畴, 以及其cv-qualified类型
- 算术类型(arithmetic type)
- 枚举类型(enumeration type)
- 指针类型(pointer type)
- 指标到成员类型(pointer-to-member type)
术语算术类型包括下述C++类型范畴
- 整数类型(integral type)
- 浮点类型(floating type)
术语整数类型包括下述C++类型范畴
- 有符号整数类型 (signed char, short, int, long),
- 无符号整数类型(unsigned char, unsigned short, unsigned int, unsigned long),
- 字元类型char与宽字元类型wchar_t
- 布林类型bool。
术语浮点类型包括C++的float, double, and long double类型
术语枚举类型包括各种枚举类型,即命名的常量值(named constant values)的集合[7].
术语指标类型包括下述C++类型范畴:
- 空指标pointer-to-void (void *),
- 对象指标pointer-to-object与指向静态数据成员的指标pointer-to-static-member-data (都是形如为T*,其中T是对象类型),
- 函数指标pointer-to-function与指向静态成员函数的指标pointer-to-static-member-function (都是形如T (*)(…),T是函数的返回值的类型).
术语指标到成员类型包括下述C++类型范畴:
- 指标到非静态数据成员(pointer-to-nonstatic-member-data), 形如T C::* 表示指向类C的类型为T的数据成员的指标;
- 指标到非静态成员函数(pointer-to-nonstatic-member-functions), 形如T (C::*)(…) 表示指向类C的返回值类型为T的成员函数的指标.
POD类类型
POD类类型是指聚合类(aggregate classes, 即POD-struct types)与聚合union (POD-union types),且不具有下述成员[10]:
- 指针到成员类型的非静态数据成员(包括数组)。
- 非POD类类型的非静态数据成员(包括数组)。
- 引用类型的(reference type)非静态数据成员。
- 用户定义的拷贝与赋值算子。
- 用户定义的析构函数。
术语聚合是指任何的数组或者类,且不具有下述特征[11]: - 用户定义的构造函数。
- 私有或保护的非静态数据成员。
- 基类。
- 虚函数。
可见,POD类类型就是指class、struct、union,且不具有用户定义的构造函数、析构函数、拷贝算子、赋值算子;不具有继承关系,因此没有基类;不具有虚函数,所以就没有虚表;非静态数据成员没有私有或保护属性的、没有引用类型的、没有非POD类类型的(即嵌套类都必须是POD)、没有指针到成员类型的(因为这个类型内含了this指针)。
3,POD类型区别
因此,non-POD类型的对象或数组总是被初始化;而POD类型的对象或数组可能未被初始化。
POD类型必然拥有trival ctor/dtor/copy/assignment函数。因为我们可以读POD类型采用最优效率的初始值填写手法,而non-POD型别采用最保险安全的做法。
- C++ POD ~ plain data structure
- Plain Old Data (POD)
- Plain old data structure
- Plain old data structure
- C++ POD(Plain Old Data)类型
- C++ POD(Plain Old Data)类型
- C++ POD(Plain Old Data)类型
- C++中的Plain Old Data(POD)
- C++ POD(Plain Old Data)类型
- Passive data structure plain old data structure, or plain old data.
- C++ Aggregate 与 POD(Plain Old Data)的解释
- C++ trivial和non-trivial及POD类型POD(Plain Old Data)
- Data Structure(with C).Experiment01.01
- Data Structure(with C).Experiment01.02
- Data Structure
- Data structure
- Data Structure
- Data structure
- C++中compare函数
- 序列
- tao.opengl+C#绘制三维模型
- PCB------单片机最小系统
- 1006等差数列
- C++ POD ~ plain data structure
- 【操作系统】No.2计算机部件:顶层视图
- 浏览器的内核及渲染模式
- asp.net C# 发送邮件
- viewpager+fragment实现底部导航
- CodeForces 785A Anton and Polyhedrons【水题】
- 给Java开发者的Scala教程
- 假设一段公路上,1小时内有汽车经过的概率为96%,那么,30分钟内有汽车经过的概率为
- Oracle中tnsname和listener的区别