一道关于虚函数继承的面试题目
#include <iostream>
#include <memory.h>
#include <assert.h>
using namespace std;
class A
{
char k[3];
public:
virtual void aa()
{};
};
class B :public virtual A
{
char j[3];
public:
virtual void bb() {};
};
class C:public virtual B
{
char i[3];
public:
virtual void cc()
{};
};
int main()
{
cout < <sizeof(A) < <endl;
cout < <sizeof(B) < <endl;
cout < <sizeof(C) < <endl;
}
在VC 6.0中的运行结果为:
8
20
32
Press any key to continue
请高手分析一下,我认为答案应该是:8,16,24
[解决办法]
子类有virtual table
[解决办法]
mingw编译运行结果是8,16,24
[解决办法]
指针4byte
[解决办法]
。。了。
我的也是8 20 32
[解决办法]
vs2005