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

请教在C++中static方法的用法有什么特别之处吗?

楼主lovelyeyes(七七)2001-12-14 10:15:17 在 C/C++ / C语言 提问

我对static方法的作用不太了解,谢谢! 问题点数:20、回复次数:11Top

1 楼nothingneed(一品猪头)回复于 2001-12-14 10:36:28 得分 5

当你想在任何对象创建前,使用static变量,就必须用static方法.  
  但static方法没有this指针,所以无法存取非static变量.Top

2 楼lovelyeyes(七七)回复于 2001-12-14 11:58:10 得分 0

非static变量必须用this指针存取吗?Top

3 楼heartlove(吴竹)回复于 2001-12-14 12:35:52 得分 5

不是必须,是编译器自动给每个对象一个this指针以指向自身Top

4 楼findcaiyzh(秋心)回复于 2001-12-14 12:39:06 得分 0

不依靠类实例  
  class   A  
  {  
          static   int   getmember(){}  
  };  
  void   main(void)  
  {  
        int   i   =   A:getmember();  
  }  
  static   方法只能操作类中的静态变量。Top

5 楼lovelyeyes(七七)回复于 2001-12-14 13:18:18 得分 0

C++中有没有super指针?this指针的用法是?Top

6 楼coppermine(coppermine)回复于 2001-12-14 14:13:07 得分 10

类的静态成员函数是和类相联系的,而不是和类的具体对象相联系的,即使一个类没有任何具体对象,也能调用类的静态成员函数.  
  类的静态成员函数的主要特征是没有this指针,这就导致了它  
  (1)不能"直接"存取类的非静态成员变量。不能直接存取是因为不能直接对对象的非静态成员变量寻址。也就是说是可以间接进行对象的非静态成员变量的存取的。  
  (2)不能被声明为virtual  
   
  一般的非成员静态函数几乎就是一个全局函数,只不过它的作用域限于包含它的文件中。Top

7 楼cmzxlinhai(老头)回复于 2001-12-14 15:13:41 得分 0

关于static   变量方面的声明举个例子:  
  void   function(void)  
  {  
        static   int   a=10;  
        a++;  
  }  
  当第一次调用function()时   a被初始化为10  
  当第二次调用function()时   a为刚才运算后保留的值11  
  被声明为static的变量某种意义上说有点象全局变量的特性Top

8 楼lovelyeyes(七七)回复于 2001-12-14 16:00:09 得分 0

coppermine说的可以间接进行对象的非静态成员变量的存取是怎么一回事?Top

9 楼coppermine(coppermine)回复于 2001-12-14 20:04:43 得分 0

举个例子,  
  #include   <iostream.h>  
   
  class   temp  
  {  
  public:  
      temp(long   x=10,   long   y=10)   :   m_x(x),   m_y(y)   {}  
  long     m_x,   m_y;  
   
  static   long   addxandy(temp   *pthis)   {   if(pthis==0)   return   0;     return   pthis->m_x+pthis->m_y;   }  
  };Top

10 楼coppermine(coppermine)回复于 2001-12-14 20:07:19 得分 0

void   main()  
  {  
      temp   tmp1;  
      cout<<temp::addxandy(&tmp1);  
  }Top

11 楼andy_lau(天行键,君子当自强不息!)回复于 2001-12-15 11:11:49 得分 0

类中的static成员(不管是成员函数还是成员变量)都是属于这个类的,而不是属于某个对象(类的某个实例)。此类的某个对象改变了static成员,也将影响到其它此类的各个对象。Top

相关问题

  • extern & static 在C语言中的用法
  • C++用法探讨。
  • C#中as的用法
  • dev c++的用法
  • C#接口用法
  • C#中with的用法?
  • c++里hashtable的用法
  • Borland C++ free command 的用法
  • 请教 C++ 中& 的用法
  • c++中new的用法

关键词

  • c++
  • 函数
  • 指针
  • 变量
  • 存取
  • 静态成员
  • 对象
  • 类
  • 方法
  • 调用

得分解答快速导航

  • 帖主:lovelyeyes
  • nothingneed
  • heartlove
  • coppermine

相关链接

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

广告也精彩

反馈

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