[class.deriven]/7:
〔注意:基类子对象可能有布局(〔basic.stc〕(与相同的最派生对象的布局不同键入。基类子对象可能具有多态行为([class.cdtor](与most的多态行为不同相同类型的派生对象。基类子对象可以是零大小([class](;但是,具有相同类的两个子对象属于同一派生最多的对象的类型和不能分配在同一地址([expr.eq](。--尾注]
struct B { /* ... */ };
struct D : B { /* ... */ };
B b;
D d;
d
的基类子对象B
可以具有与相同类型的最派生对象(此处为b
((B
(不同的布局。例如,一个实现可以为D
的成员重用B
的尾部填充。
您是否在寻找比显而易见的更深入的东西
class Animal {} // base
class Mammal : Animal {} // derived
class Dog : Mammal {} // most derived
动物、狗和哺乳动物都是动物。
考虑到多重遗传的可能性(例如,你可以有另一个包含水生生物和陆地生物的层次结构,并选择将狗定义为哺乳动物和陆地生物(,文章指出,狗不能被认为具有布局";动物加东西";(可能是"TerrestrialOrganism plus…"(。