c++ 虚函数表空间大小

2017-03-10  本文已影响84人  HenryTien
#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

上一篇 下一篇

猜你喜欢

热点阅读