首页 > 解决方案 > 为什么添加多个虚函数时类的大小保持不变?

问题描述

类的大小只有 8 个字节,这是虚拟指针的大小?那么班级中的vtable的大小呢?

#include <iostream>
    using namespace std;
    class Base
    {    public:
         virtual void f1(){}
         virtual void f2(){}
    };
    class Derive: public Base
    {
        
        void f1(){}
        void f2(){}
    };
    int main()
    {
        cout<<sizeof(Base)<<endl;
    }

标签: c++

解决方案


您可能会发现,如果您的实现确实使用 v-tables 来实现虚函数,那么该类本身会存储一个指向v-table 的指针。

指针的大小将不取决于它指向的 v-table 中的函数数量。


推荐阅读