首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

C++ 题目解决办法

2012-02-27 
C++ 题目classmyclass1{}classmyclass2{}classb:publicmyclass1{virtualvoidw1()}classc:publicmyclas

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

热点排行