C++ 规范是否允许非虚拟类的实例包含用于 vtable 指针的内存?我问这个是因为一位同事说他曾经使用过 C++ 编译器,其中发生了以下情况:
class MyClass
{
public:
HeaderStruct header; //This had extra words
BodyStruct message_body;
};
然后他把代码改成这样,去掉了多余的字:
struct MyClass
{
HeaderStruct header; //This did not have extra words
BodyStruct message_body;
};
这些类型都不是虚拟的,也不是从任何虚拟的东西派生的。所以理论是,也许这个特定的编译器为类实例的 vptr 分配了内存,但没有为结构实例分配内存。所以我只是想确定规范是否排除了这种编译器行为。
谢谢!
肯