CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
英特尔®游戏设计大赛100美元现金周周送 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C/C++ >  C语言

有好多小问题要问问?

楼主yellowwolf(你们把名给全起了所以我注册色狼)2003-09-04 00:35:29 在 C/C++ / C语言 提问

1.  
  class   A  
  {  
  public:  
    A()   {   }  
    ~A()   {   }  
  };  
  class   B   ()  
  {  
  public:  
      B()   {   }  
      ~B()   {   }      
  static   int   a;  
  };  
  int   B::a   =   0;  
  为何cout<<sizeof(A)<<endl;  
          cout<<sizeof(B)<<endl;  
  都为1呢。   A无任何变量为何为1,   而B有一个静态数据成员时也有为1呢。虽然说静态变量  
  对对象来说为共有的,但他也所于这个类啊,为何看不到他分配的空间呢。   cout<<sizeof(B::a)<<endl;   值为4   为何。。。奇怪1!  
  而当  
  class   D:   public   A  
  {  
      int   i;  
  };  
  为什么   sizeof(D)==   4   而不为   5呢?  
  2.  
   
  问题点数:20、回复次数:7Top

1 楼oopig(面向对象的猪)回复于 2003-09-04 01:11:09 得分 15

1.因为A和B中都没有成员变量,按照道理A和B的sizeof都是0,但是为了防止两个不同的对象使用同一个空间地址,规定sizeof必须至少占用一个字节。  
  2.静态数据成员你可以理解为(实际上也是)全局变量,具有唯一性,和所在类的每个object实例并没有直接关系,所以不影响类的sizeof。  
  3.sizeof(D)   ==   4是因为D已经包含了一个int类型的成员变量,每个object的地址空间不会重复,所以不需要多分配那一个字节的占位空间。  
  Top

2 楼yellowwolf(你们把名给全起了所以我注册色狼)回复于 2003-09-05 21:56:23 得分 0

因为A和B中都没有成员变量,按照道理A和B的sizeof都是0,但是为了防止两个不同的对象使用同一个空间地址,规定sizeof必须至少占用一个字节  
   
  不好意思,还是有点不明白这句话?Top

3 楼oopig(面向对象的猪)回复于 2003-09-05 23:29:57 得分 0

假设有两个对象  
  class   A   {};  
  void   main()  
  {  
          int   i   =   0;  
          A   a1,   a2;  
          ...  
  }  
  那么我问你那么&a2和&a1和&i一样吗?如果sizeof(A)   ==   0,就会出现&a1   ==   &a2   ==   &i,你认为这会有什么后果?Top

4 楼fishsward(.)回复于 2003-09-06 01:18:13 得分 0

同意   oopig(面向对象的猪)Top

5 楼noscar(java+Linux)回复于 2003-09-06 01:20:16 得分 0

没有实例!Top

6 楼yndfcd(YNDFCD)回复于 2003-09-06 09:27:06 得分 5

空类作为一个独立的类时大小不加零,如果空类作为其它类的基类,那么它的大小就是0,静态成员的大小不算在类的大小之中,这是C++的规定。  
   
  Top

7 楼yellowwolf(你们把名给全起了所以我注册色狼)回复于 2003-09-06 22:01:01 得分 0

首先谢谢上面的兄弟,   我想问一下“面象的猪”  
  如果sizeof(A)   ==   0,  
  不什么会有这样的结果呢?   &a1   ==   &a2   ==   &i,  
   
  如:  
      int   i,   j;  
      sizeof(i)   ==   sizeof(j)啊。  
  但&i   !=   &j  
  可能你表达的跟你说的不一样吧。  
  Top

相关问题

  • 小菜问问^-^
  • 好久没发问,问问Windows消息
  • [问问问]火车站是不是24小时售票的?????[问问问]
  • 问问问问问问问问问问问问问问问问题!
  • 新手问问题,小妹初来乍到,请多多指教!
  • 我散分,大家提问,问题好的多给分!
  • 小弟又来问问题了,csdn真好,各取所需阿~
  • 小小问问题题
  • 问问大家都多大?
  • 多数据访问问题

关键词

得分解答快速导航

  • 帖主:yellowwolf
  • oopig
  • yndfcd

相关链接

  • C/C++ Blog
  • C/C++类图书
  • C/C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo