而64位默认是8字节对齐.
然后你会说, 就这?
类大小
那么下面这个呢?...) : B(a, b, c), d(d) {}
virtual void hello() {}
private:
int d;
};
你会说28, 不过注意, 64位默认8字节对齐...void hello() override {}
private:
int d;
};
结果64怎么算, 首先B 24, C 28, D 28, E 28 + 28 + 4 = 60, 然后8字节对齐...先来看E, 它继承了C, D的独有变量,但是没有继承他们从B得到的, 而是直接从B获取一份内容, 这样就是3个虚指针, B的变量, C和D的变量, 自己的变量, 也就是24+13+4+4+4=49, 8字节对齐...其实2个虚指针+B的变量+C的变量, 16+13+4=33, 8字节对齐, 40.