Chinaunix首页 | 论坛 | 博客
  • 博客访问: 154509
  • 博文数量: 31
  • 博客积分: 1455
  • 博客等级: 上尉
  • 技术积分: 340
  • 用 户 组: 普通用户
  • 注册时间: 2010-03-09 02:20
文章存档

2012年(2)

2011年(18)

2010年(11)

分类: C/C++

2011-11-17 10:08:12

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)
阅读(1612) | 评论(2) | 转发(0) |
给主人留下些什么吧!~~

X-Hawk2011-11-18 18:54:39

C++被人诟病的地方,很多地方为了语言的要求,徒耗脑力。C++11做了不少改变,这些改变让程序员越来越舒服。

这个系列,主要就是找了这些方面,增强使用者愉悦度的角度看的。

move和友值引用,从使用者的感官愉悦度看,没多少好处。
所以没想放一起。有机会再和大家一起学习下。。

captivated2011-11-18 12:40:34

学习了 mark一下 LZ弄了一个系列啊
那个mov语义和右值引用我一直没弄清楚 希望LZ这个系列当中足够简洁明了 又解释清楚本质