C++POD 类型

POD 类型一般具有以下几种特征(包括 classunionstruct等):

1) 没有用户自定义的构造函数、析构函数、拷贝构造函数和移动构造函数。
2) 不能包含虚函数和虚基类。
3) 非静态成员必须声明为 public4) 类中的第一个非静态成员的类型与其基类不同,例如: 

	`class B1{};`
	`class B2 : B1 { B1 b; };`
	class B2 的第一个非静态成员 b 是基类类型,所以它不是 POD 类型。

5) 在类或者结构体继承时,满足以下两种情况之一: 
派生类中有非静态成员,且只有一个仅包含静态成员的基类;
基类有非静态成员,而派生类没有非静态成员。

	我们来看具体的例子: 
	`class B1 { static int n; };`
	`class B2 : B1 { int n1; };`
	`class B3 : B2 { static int n2; };`
	对于 B2,派生类 B2 中有非静态成员,且只有一个仅包含静态成员的基类 B1,所以它是 POD 类型。对于 B3,基类 B2 有非静态成员,而派生类 B3 没有非静态成员,所以它也是 POD 类型。

6) 所有非静态数据成员均和其基类也符合上述规则(递归定义),也就是说 POD 类型不能包含非 POD 类型的数据。
7) 此外,所有兼容C语言的数据类型都是 POD 类型(structunion 等不能违背上述规则)。 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值