C++ POD ~ plain data structure
2017-03-20 21:42
246 查看
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 Old Data)类型
- C++ POD(Plain Old Data)类型
- C++ POD(Plain Old Data)类型
- Plain old data structure(POD)
- C++ POD(Plain Old Data)类型
- C++中的Plain Old Data(POD)
- C++ POD(Plain Old Data)类型
- C++ POD(Plain Old Data)类型
- C++ 读取文件内容到data 结构体 structure
- 《Data Structure And Algorithm Analysis In C++》读书笔记一
- Plain Old Data (POD)
- 《Data Structure And Algorithm Analysis In C++》读书笔记三
- 《Data Structure And Algorithm Analysis In C++》读书笔记二
- C++ Data Structure 学习笔记 (2011.5.2)——Cin的用法详解以及文件的读取
- C++ trivial和non-trivial及POD类型POD(Plain Old Data)
- Plain Old Data (POD) (转)
- Datastructure c++ note 2
- LeetCode-Add and Search Word - Data structure design(C++)
- C++ Aggregate 与 POD(Plain Old Data)的解释
- An implementation of the skip list data structure written in C++