【发布时间】:2014-03-26 13:39:57
【问题描述】:
根据当前的C++标准草案,一个标准布局类
要么在派生最多的类中没有非静态数据成员,并且最多有一个具有非静态数据成员的基类,要么没有具有非静态数据成员的基类
我还没有看到任何在此限制下会更有效的实现。为什么会存在(除了让事情变得更困难)?
【问题讨论】:
-
该文本来自哪里?请提供一些背景信息。
-
这个问题更像是:是否有一个实现可以使给定的限制有意义?
-
@HristoVenev 我是这样看待 POD 结构的:它只是数据,这意味着它可以很容易地跨边界复制。一个简单的想法是我可以将这个结构(和这个结构的一个数组)完整地写入一个文件,超级简单(简单的内存转储)。如果它有静态数据成员,或者有多重继承,这很重要:我应该把那个静态数据成员放在文件中的什么位置?我现在必须做花哨的解析才能得到它。在许多情况下,POD 结构由于其内存布局而更易于使用。
-
struct A{int a;};struct B:A{int b;};B 在大多数实现中可以被认为是标准布局。 -
@JoachimPileborg 这来自
std::is_standard_layout文档。我刚刚编辑了帖子以澄清。
标签: c++ standard-layout