读书人

C++ 题目解决办法

发布时间: 2012-02-27 10:00:22 作者: rapoo

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

读书人网 >C++

热点推荐