接上文,还是先看一个例子: struct base { int value = 99; }; struct offset { char space[10] = "abc"; }; struct derived : offset, base { int dvalue = 0; }; derived的内存布局应该是先存放offset的内容,再存放base的内容,最后存放derived自己的成员,按照4字节对齐,这个很容易验证: 如果我们添加虚函数: struct base { int value = 99; virtual void foo() { std::cout << v...