pod 类型
来源:互联网 发布:如何屏蔽淘宝推广广告 编辑:程序博客网 时间:2024/05/16 05:00
偶尔在一些文字资料和 C++ 文档以及 Microsoft .NET 框架中看到术语“POD 类型”。这个术语是什么意思?
Shelby Nagwitz
你可以将 POD 类型看作是一种来自外太空的用绿色保护层包装的数据类型,POD 意为“Plain Old Data”(译者:如果一定要译成中文,那就叫“彻头彻尾的老数据”怎么样!)这就是 POD 类型的含义。其确切定义相当粗糙(参见 C++ ISO 标准),其基本意思是 POD 类型包含与 C 兼容的原始数据。例如,结构和整型是 POD 类型,但带有用户定义的构造函数或虚拟函数的类则不是。 POD 类型没有虚拟函数,基类,用户定义的构造函数,拷贝构造,赋值操作符或析构函数。
为了将 POD 类型概念化,你可以通过拷贝其比特来拷贝它们。此外, POD 类型可以是非初始化的。例如:
struct RECT r; // value undefined
POINT *ppoints = new POINT[100]; // ditto
CString s; // calls ctor ==> not POD 非 POD 类型通常需要初始化,不论是调用缺省的构造函数(编译器提供的)还是自己写的构造函数。
过去, POD 对于编写编译器或与C 兼容的 C++ 程序的人来说很重要。现在,POD 来到 .NET 的环境中。在托管 C++ 中,托管类型(包括 __value 和 __gc 两者)能包含嵌入的原生 POD 类型。 Figure 3 展示了例举说明代码。托管的 Circle 类能包含 POINT,但无法包含 CPoint 类。如果你尝试编译 pod.cpp 会报一个 C3633 错误:“Cannot define ''m_center'' as a member of managed ''Circle'' because of the presence of default constructor ''CPoint::CPoint'' on class ''CPoint''.”(译者:意思是由于类 CPoint 有缺省的构造函数‘CPoint::CPoint’,所以不能将‘m_center’定义为托管类‘Circle’的一个成员)
.NET 限定嵌入的本地对象只能为 POD 类型的理由是这样做能安全地拷贝它们,不用担心调用构造函数,初始化虚表,或任何非 POD 类型需要的其它机制。
- "POD" 类型
- pod 类型
- POD 类型
- POD类型解释
- 关于POD类型
- 什么是pod类型?
- c++中的pod类型
- C++中POD类型
- C++ POD类型
- C++ POD 类型
- POD类型的萃取
- c++的POD类型详解
- c++的POD类型详解
- c++的POD类型详解
- 基本语言细节--POD类型
- c++的POD类型详解
- c++11 pod类型(了解)
- C++11之POD类型
- 从微软得到的教训:十个要避免的网站设计陷阱
- Struts2中获取request,response,session
- isr
- 我的第一个DIV+CSS导航条 仿PHP168
- SSH框架结构配置
- pod 类型
- 网上找到的HashSet的java实现
- IBM Lotus Sametime 8.5 策略管理简介
- ABAP AT SELECTION-SCREEN ON VALUE-REQUEST / PROGRESS ON VALUE-REQUEST
- 自己参考jdk和hashSet写的hashTable(JAVA实现)
- 在ORACLE中实现SELECTTOPN的方法--转
- jbpm设计器的配置和使用
- 按照《OSGi 原理与最佳实践》进行OSGi部署,发生的问题解决方法
- 数据库常用对象查询