设为首页 加入收藏

TOP

13.1.6 静态成员
2013-10-07 01:13:55 来源: 作者: 【 】 浏览:72
Tags:13.1.6 静态 成员

13.1.6  静态成员

静态成员是用static修饰的成员,属性和函数都可以被说明是静态的。被定义为静态的属性或函数,在类的各个实例间是共享的,不会为每个类的实例都创建一个静态成员的实现。静态数据成员是一种特殊的属性,在定义类对象时,不会为每个类对象复制一份静态数据成员,而是让所有的类对象都共享一份静态数据成员备份。其定义格式如下:

  1. static <数据类型> <属性名称>; 

静态成员函数的声明方式如下所示。

  1. static <返回类型> <成员函数名称>(<参数列表>); 

一般来讲,在静态函数中访问的基本上是静态数据成员或全局变量。

【示例13-11】 下述代码中的类定义了静态属性counter和静态函数表示目前的学生人数,更改student类的构造函数,id为系统根据counter自动分配。

  1. class student  
  2. {  
  3. private:  
  4.     static int counter;                 //静态数据成员,用于记录学生人数  
  5.     int id;                             //学号  
  6. public:  
  7.     student();                          //构造函数  
  8.     void show();  
  9.     static void setcounter(int);        //静态成员函数,用于设置静态属性counter  
  10.  
  11. };  
  12. int student::counter=1;                 //静态数据成员初始化  
  13. student::student()  
  14. {  
  15.     id=counter++;                       //根据counter自动分配学号id  
  16. }  
  17. void student::show()  
  18. {  
  19.     cout<<id<<endl;  
  20. }  
  21. void student::setcounter(int new_counter)  
  22. {  
  23.     counter=new_counter;  
  24. }  
  25. void main()  
  26. {  
  27.     student s1;  
  28.     s1.show();  
  29.     student s2;  
  30.     s2.show();  
  31.     student s3;  
  32.     s3.show();  
  33.     s1.setcounter(10);  //重新设置计数器  
  34.     student s4;  
  35.     s4.show();  
  36.     student s5;  
  37.     s5.show();  

程序运行结果如下:

  1. 1  
  2. 2  
  3. 3  
  4. 10  
  5. 11 

分析:该示例定义了一个静态属性counter和一个静态函数setcounter。counter是一个计数器,它在类的所有对象间共享。因此当对象s1被创建时,counter被初始化为1,接下来的对象s2和s3中counter都是自动增加counter的值。函数setcounter()用来修改counter,counter也只能被静态成员函数setcounter修改。修改counter值后,对象s4和s5就从10开始计数。

【责任编辑:云霞 TEL:(010)68476606】

回书目   上一节   下一节

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇13.1.8 修饰符 下一篇13.1.4 构造函数

评论

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