相关疑难解决方法(0)

为什么C++ 11的POD"标准布局"定义是这样的?

我正在研究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;};
Run Code Online (Sandbox Code Playgroud)

我承认这是一个奇怪的结构,但为什么要Bad被禁止但不是Good

最后,如果不止一个组成类有数据成员,会出现什么问题?

c++ pod standard-layout c++11

41
推荐指数
3
解决办法
6446
查看次数

标签 统计

c++ ×1

c++11 ×1

pod ×1

standard-layout ×1