POD类型概述

POD

简旧数据类型 (PODType)

    来自C ++标准的技术术语。 “Plain Ol'Data”的缩写:POD-struct是一个聚合类,它没有指向成员,非POD-struct,非POD-union(或此类类型的数组)的指针类型的非静态数据成员或引用,没有用户定义的拷贝赋值运算符,也没有用户定义的析构函数。 类似地,POD-union是一个聚合联合,它没有指向成员,非POD结构,非POD联合(或此类类型的数组)或引用的类型指针的非静态数据成员,并且没有用户 - 定义的拷贝赋值运算符,没有用户定义的析构函数。 POD类是POD结构或POD结合的类。 聚合是一个数组或类(第9节),没有用户声明的构造函数,没有私有或受保护的非静态数据成员,没有基类,没有虚函数。

Plain old data structure, 缩写为POD, 是C++语言的标准中定义的一类数据结构,POD适用于需要明确的数据底层操作的系统中。POD通常被用在系统的边界处,即指不同系统之间只能以底层数据的形式进行交互,系统的高层逻辑不能互相兼容。比如当对象的字段值是从外部数据中构建时,系统还没有办法对对象进行语义检查和解释,这时就适用POD来存储数据。

POD类型包括下述C++类型,以及其cv-qualified的类型,还有以其为基类型的数组类型:

  • 标量类型(scalar type)
  • POD类类型(POD class type)

其它与POD相关的C++特性:

  • 内存布局——POD对象的组成字节是连续的
  • 初始化——对于non-const POD对象,如果没有初始化声明时,具有不确定的初值(indeterminate initial value) . POD对象的缺省初始化为0值. 静态POD对象初始化为给定的初值,如果是局部静态POD对象,在进入所在作用域之前初始化; 对于非局部静态POD对象,在任何动态初始化之前赋予初值.
  • 拷贝——POD对象可直接拷贝(例如用memcpy())到其它字符数组或相同POD类型的对象,保持其值不变[20]。POD类型可以用作标准模板字符串类的字符. 由于这个原因,函数的返回值如果是non-POD类型,则不能通过寄存器传递函数的返回值。
  • 寻址——一个POD对象的地址可以是一个地址常量表达式;一个对POD成员的引用可以是一个引用常量表达式. 一个POD-struct对象的指针,适合用reinterpret_cast转换到它的初始值.
     

ODR:“一个定义规则”

它表示C ++程序中的任何实体必须在构成程序的所有编译单元(目标文件)中具有相同的定义。

ODR 规则的冲突通常显示为链接器错误。 当同一名称在不同的翻译单元中具有两个不同的定义时,将发生链接器错误。

元数arity

    函数或成员函数接受的参数个数。 除非另有说明,否则在指定元数时不会计算隐藏this成员函数的参数。

ntbs

    Null-Terminated Byte String或'C'-string。 C ++字符串文字是ntbs类型。 ntbs绝不能为空。

引发raise

    Python中的异常是“引发”而不是“抛出”,因为它们在C ++中。 当本文档说在C ++代码的上下文中“引发”某些Python异常时,这意味着通过Python/‘’C’ throw_error_already_set()设置相应的Python异常,并调用throw_error_already_set() 。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

道格拉斯范朋克

播种花生牛奶自留田

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值