具有虚函数的类的大小

2024-03-19

我正在修改 C++ 概念,但我坚持使用非常简单的代码

#include <iostream>
using namespace std;

class foo {
public:
    //int i;
    void virtual foobar()
    {
        cout << "foobar\n";
    }
};

int main()
{
    foo f;
    cout << sizeof(f) << endl;
    //cout << sizeof(f.i) << endl;
    return 1;
}

上面代码的输出是8 但是当我从代码中删除注释时 输出为16和4

我不明白当类没有成员变量时,VPTR 大小为 8,但添加变量大小后变为 12。


您正在一个指针与 8 字节对齐的平台上工作。由于虚拟表指针通常是对象布局中的第一个元素,因此它也必须与 8 字节对齐。所以在后面插入填充4个字节int成员,这就是为什么你得到 16 的大小(8 个字节用于 vf 表指针,4 个字节用于 int 和 4 个填充字节)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

具有虚函数的类的大小 的相关文章

随机推荐