首页 > 解决方案 > 下面在 [class.derived]/7 中突出显示的“相同类型”的表达是什么意思?

问题描述

[class.derived]/7

[注意:基类子对象的布局([basic.stc])可能与同类型的最派生对象的布局不同。基类子对象的多态行为 ([class.cdtor]) 可能不同于同类型的最派生对象的多态行为。基类子对象的大小可能为零([class]);但是,具有相同类类型且属于同一个最派生对象的两个子对象不能分配在同一地址([expr.eq])。——尾注]

标签: c++language-lawyer

解决方案


struct B { /* ... */ };
struct D : B { /* ... */ };

B b;
D d;

的基类子对象Bd布局可能b与同类型 ( B) 的最派生对象(此处)不同。例如,一个实现可以重用BforD成员的尾部填充。


推荐阅读