CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C/C++ >  C语言

关于static的问题

楼主jinyanfang()2006-07-02 22:10:48 在 C/C++ / C语言 提问

关于static刚看了C++   Primer中的描述,举例如下,  
  class::Bar{  
              //.....  
              private:  
                          static   Bar   mem1;//ok  
                          Bar   *   mem2;//ok  
                          Bar   mem3;   //error  
  };  
   
  我的理解是对于静态的定义,是不是在编译的时候不分配空间,在运行时在分配内存空间;而指针变量定义成功,是因为指针分配空间已知,而一般数据变量则不能这么定义。请高手能帮我弄弄明白,有点晕乎。.......  
  问题点数:20、回复次数:1Top

1 楼UPCC(杂食动物)回复于 2006-07-02 22:31:46 得分 20

我的理解是对于静态的定义,是不是在编译的时候不分配空间,在运行时在分配内存空间  
  ---------------------------------------------------  
  static   Bar   mem1;//ok  
  不是不分配,而是因为静态数据和实例数据在分配方式和访问上是不同的,静态成员是共享的,他的大小  
    静态数据成员的一些独特方式的使用:(1)静态数据成员的类型可以是其所属类,而非static的数据成员只能声明为类对象的指针或者引用  
    (2)静态数据成员可以被作为类成员函数的缺省实参,而非static成员不能。  
   
   
   
  而指针变量定义成功,是因为指针分配空间已知,而一般数据变量则不能这么定义  
  -----------------------------------  
  Bar   *   mem2;//ok  
  那是因为什么指针都是地址线宽度,编译起不用预早知道类型的大小。  
  我们知道可以声明数据成员为类的指针和引用,因为它们的大小不依赖于所指的对象,是固定的  
   
   
  Bar   mem3;   //error  
  -----------------------------  
  在自己本身里面定义自己,那自己又定义自己,自己又定义自己,那这个内参到底是多大呢?谁都不知道,所以编译不了。Top

相关问题

关键词

得分解答快速导航

  • 帖主:jinyanfang
  • UPCC

相关链接

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

广告也精彩

反馈

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