Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/150.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 具有虚拟函数的类占用更多空间_C++ - Fatal编程技术网

C++ 具有虚拟函数的类占用更多空间

C++ 具有虚拟函数的类占用更多空间,c++,C++,有这样的代码: #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(); retur

有这样的代码:

#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;
}

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

任何具有虚拟函数的类都需要指向该类的vtable的指针。因此,有一个隐藏的成员是指针的大小

4 8