它对类的影响与它对结构体的影响完全相同,会影响数据成员的对齐方式。 实际上,在类上使用它非常不寻常,几乎总是一个错误。 C++ 类对象的布局高度依赖于实现。 C++ 编译器通常会努力优化该布局,在可以时删除 v 表指针,而在类使用多重继承时可能添加一个 v 表指针。 因此,对类声明进行微小更改,例如将方法设置为虚拟方法或添加基类,可能会显着改变对象布局。 然后,这当然会破坏依赖于该编译指示符的代码。 就像序列化为二进制文件的对象不再正确反序列化一样。 这通常也是一种不好的做法,但仍经常发生。 不要使用它。