繁体   English   中英

具有虚拟功能的类占用更多空间

[英]class with virtual functions takes more space

有这样的代码:

#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个字节?

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM