免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 4829 | 回复: 5
打印 上一主题 下一主题

[C++] [转] C++11这些令人无比愉悦的改变(1) -- POD类型 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-11-17 10:23 |只看该作者 |倒序浏览
POD类型(Plain Old Data),就是C++里面和C内存结构上完全兼容的结构。
在C++98里面,POD类型有一些限制,
你甚至不能给它加一个构造函数

例如:
struct S { int a; };
// S是POD
struct SS { int a; SS(int aa) : a(aa) { } }; // SS不是POD
struct SSS { virtual void f(); /* ... */ };  // SSS不是POD


然而,C++的SS的内存结构,不是可以兼容C吗,
它除了有构造函数,的确没啥特殊的地方。

是的,在C++11里面,SS就是一个POD。
一个struct,只要它满足一下条件,就算是POD,
1. 没有虚函数
2. 没有虚基类
3. 没有引用
4. 访问控制不能有多种,例如一个POD类型中,不能同时有public 和 private两种访问控制。

(转载请注明来自:nuvoton-m0.com)

论坛徽章:
0
2 [报告]
发表于 2011-11-17 14:36 |只看该作者
为啥要POD,我的意思是有什么好处和必要性?

论坛徽章:
0
3 [报告]
发表于 2011-11-17 14:48 |只看该作者
为啥要POD,我的意思是有什么好处和必要性?
walleeee 发表于 2011-11-17 14:36



    和C语言的struct结构的内存分布相同,
你可以借助POD对象,来和C语言的程序安全的互相读写,不会有问题。

论坛徽章:
0
4 [报告]
发表于 2011-11-17 19:31 |只看该作者
回复 3# X-Hawk


    :-)有一点明白了,就说是POD是简单内存布局了

论坛徽章:
0
5 [报告]
发表于 2011-12-09 17:32 |只看该作者
我有点疑问,C++98里面,SS应该是POD吧~

论坛徽章:
0
6 [报告]
发表于 2011-12-09 21:44 |只看该作者
回复 5# lovemychobits


    SS有构造函数,任然不是pob。

ref:
http://blog.csdn.net/aladdina/article/details/3953552
以及该文引用的几篇wiki
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP