设为首页 加入收藏

TOP

6.3 sizeof(6)
2013-10-07 14:09:08 来源: 作者: 【 】 浏览:67
Tags:6.3 sizeof

6.3  sizeof(6)

面试例题10:以下代码的输出结果是多少?[美国某著名防毒软件公司2006年面试题]

  1. class B  
  2. {  
  3.  float f;  
  4.  char p;  
  5.  int adf[3];  
  6. };  
  7. cout << ""<< sizeof(B); 

解析:float f占4个字节,char p占1字节,int adf[3]占12字节,总共是17字节。根据内存对齐原则,要选择4的倍数,是20字节。

答案:20

面试例题11:一个空类占多少空间?多重继承的空类呢?[英国某著名计算机图形图像公司面试题]

解析:我们用程序来实现一个空类和一个多重继承的空类。看看它们的大小是多少。代码如下:

  1. #include <iostream> 
  2. #include <memory.h> 
  3. #include<assert.h> 
  4.  
  5. using namespace std;  
  6. class A  
  7. {  
  8.  
  9. };  
  10. class A2  
  11. {  
  12.  
  13. };  
  14. class B : public   A  
  15. {  
  16.  
  17. };  
  18. class C : public virtual B  
  19. {  
  20.  
  21. };  
  22. class D : public  A,public  A2  
  23. {  
  24.  
  25. };  
  26. int main(int argc,char *argv[])  
  27. {  
  28.  
  29.    cout << "sizeof(A): " << sizeof(A)  
  30. << endl;  
  31.    cout << "sizeof(B): " << sizeof(B)  
  32. << endl;  
  33.    cout << "sizeof(C): " << sizeof(C)  
  34. << endl;  
  35.    cout << "sizeof(D): " << sizeof(D)  
  36. << endl;  
  37.    return 0;  

以上答案分别是:1,1,4,1。这说明空类所占空间为1,单一继承的空类空间也为1,多重继承的空类空间还是1。但是虚继承涉及虚表(虚指针),所以sizeof(C)的大小为4。

答案:一个空类所占空间为1,多重继承的空类所占空间还是1。

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇6.4 内联函数和宏定义 下一篇6.3 sizeof(5)

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: