我正在研究C ++ 11中新的,宽松的POD定义(第9.7节)
标准布局类是这样的类:
没有非标准布局类(或此类数组)或引用的非静态数据成员,
没有虚拟函数(10.3)和虚拟基类(10.1),
对所有非静态数据成员具有相同的访问控制(条款11),
没有非标准布局的基类,
在最派生的类中没有非静态数据成员,在一个非静态数据成员中最多没有一个基类,或者在非静态数据成员中没有基类,并且
没有与第一个非静态数据成员相同类型的基类。
我强调了令我惊讶的一点。
如果我们允许数据成员具有不同的访问控制,那会出什么问题?
如果第一个数据成员也是基类,怎么办?即
struct Foo {};
struct Good : Foo {int x; Foo y;};
struct Bad : Foo {Foo y; int x;};
我承认这是一个奇怪的结构,但是为什么不应该Bad禁止它Good呢?
最后,如果一个以上的构成类具有数据成员,那会出什么问题?
炎炎设计
HUWWW
www说
相关分类