c++ 虚函数表空间大小

#include <iostream>
using namespace std;
class A
{
    int i;
    void f() {}
    virtual void run() {}
    virtual void run1() {}
    virtual void run2() {}
};

class B :virtual public A
{
public:
    virtual void run() {}
    virtual void run1() {}
};
int main() {

    cout << sizeof(A) << endl;
    cout << sizeof(B) << endl;
    system("pause");
    return 0;
}

64位系统下输出: vs中
16-8
24-8
Press any key to continue . . .

A中int i 4个+虚函数表指针run 4 =8
B 中 继承A(int i 4个)+虚继承 占4个 run是virtual占8个,run1()也是,但是已经有了虚函数表指针

如果在B中增加一个virtual run3() 则增加8个字节 为 24

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容