小编Sri*_*ose的帖子

虚拟类继承对象大小问题

在这里,在这段代码中,ob1的大小为16,这很好(由于虚拟指针),但我不明白为什么ob2的大小为24。

#include <iostream>
using namespace std;
class A {
    int x;
};
class B {
    int y, z;
};
class C : virtual public A {
    int a;
};
class D : virtual public B {
    int b;
};
int main() {
    C ob1;
    D ob2;
    cout << sizeof(ob1) << sizeof(ob2) << "\n";
}
Run Code Online (Sandbox Code Playgroud)

我预计ob2的大小为20,但输出为24

c++ virtual-inheritance memory-layout vptr

3
推荐指数
1
解决办法
158
查看次数

标签 统计

c++ ×1

memory-layout ×1

virtual-inheritance ×1

vptr ×1