楼主,你用virtual继承,编译器会在对象里放一些其它的信息来保证其行为...这些东西在标准里没有规定,编译器可以对它进行任意排布.原则上,对齐只对POD类型有意义.其它类型很难保证其布局...比如:编译器甚至可以对类的私有成员进行重排... 所以,很多时候你会发现,我们定义数据包多用使用而不是继承... 比如: struct a { ... }; struct b { //通常是这样 a _member; .... }; struct c : public a { // 这样在绝大多数情况下是可以的,但不能保证 ... };