C++ 题目
class myclass1{};
class myclass2{};
class b:public myclass1{
virtual void w1();
};
class c:public myclass2{
virtual void w2();
};
class d:public b,public c{};
void main()
{
cout < <sizeof(d) < <endl;
}
我在VC++6.0 结果为12 为什么 ?
[解决办法]
具体我记不得了。lz可以看看《Inside C++ Object Model》。两个虚函数指针就需要8个字节,再加上1个字节的空余生成数据域以及3个字节的填充。
[解决办法]
一个类(class d)定义里面即使什么都没有,也会占有1个字节
class b和class c里面都有一个指针指向虚表,指针占4个字节
再因为内存对齐,所以sizeof(d)=4+4+1+3