带有虚函数的类占用更多空间

class with virtual functions takes more space

本文关键字:空间 函数      更新时间:2023-10-16

有这样的代码:

#include <iostream>
class A{
    int a;
    int fun(){}
};
class B{
    int a;
    virtual int fun(){}
};
int main()
{
    std::cout << sizeof(A) << " " << sizeof(B) << std::endl;
    std::cin.get();
    return 0;
}

输出为:

4 8

为什么B类比A类大4字节?

任何带有虚函数的类都需要一个指向该类虚函数表的指针。因此,存在一个隐藏成员,即指针的大小。

http://en.wikipedia.org/wiki/Virtual_method_table