设为首页 加入收藏

TOP

1.2.6 静态成员
2013-10-07 01:10:04 来源: 作者: 【 】 浏览:93
Tags:1.2.6 静态 成员

1.2.6  静态成员

C++(www.cppentry.com)还有一种数据成员,称作"静态"成员,静态成员是所有对象公有的。静态成员有静态数据成员和静态函数成员之分。

1. 静态数据成员

静态数据成员的语句格式为:

static 类型说明符 成员名;

关于静态数据成员的使用需注意以下几点:

不管一个类的对象有多少个,其静态数据成员也只有一个,由这些对象所共享,可被任何一个对象访问。

在一个类的对象空间内,不包含静态成员的空间,所以静态成员所占空间不会随着对象的产生而分配,或随着对象的消失而回收。

静态数据成员的存储空间的分配是在程序一开始运行时就被分配,并不是在程序运行过程中在某一函数内分配空间和初始化。

静态数据成员的赋值语句,既不属于任何类,也不属于包括主函数在内的任何函数,静态变量赋初值语句应当写在程序的全局区域中,并且必须指明其数据类型与所属的类名,并用如下格式:

  1. 类型 类名::变量名 = 值; 

【例1.4】静态数据成员的使用(Ex1_04):

  1. #include <iostream.h>  
  2. class CSum  
  3. {  
  4. public:  
  5. CSum(int a = 0, int b = 0)    
  6. {  nSum += a+b; }  
  7. int GetSum()    
  8. {  return nSum; }  
  9. void SetSum(int sum)   
  10. {  nSum = sum; }  
  11. private:  
  12. static int nSum;    // 声明静态数据成员  
  13. };  
  14. int CSum::nSum = 0;    // 静态数据成员的初始化  
  15.  
  16. void main()  
  17. {  
  18. CSum one(15, 3);  
  19. cout<<"sum = "<<one.GetSum()<<endl;  
  20. one.SetSum(6);  
  21. cout<<"sum = "<<one.GetSum()<<endl;  

运行结果为:

  1. sum = 18  
  2. sum = 6 

2.静态函数成员

静态函数成员的定义:

  1. static 类型 函数名(形参)  
  2. {  
  3.     函数体  

与静态数据成员一样,静态函数成员与类相联系,不与类的对象相联系,所以访问静态函数成员时,不需要对象。一个静态函数成员不与任何对象相联系,所以它不能对非静态成员进行默认访问。

【例1.5】静态函数成员的使用(Ex1_05):

  1. #include <iostream.h>  
  2. class CSum  
  3. {  
  4. public:  
  5. CSum(int a = 0, int b = 0)   
  6. {  nSum += a+b; }  
  7. int GetSum()   
  8. {  return nSum; }  
  9. void SetSum(int sum)   
  10. {  nSum = sum; }  
  11. static void ShowData(CSum one);  // 声明静态函数成员  
  12. private:  
  13. static int nSum;   
  14. };  
  15. void CSum::ShowData(CSum one)   // 静态函数成员的实现  
  16. {  
  17. cout<<"直接使用静态成员"<<endl;  
  18. cout<<"sum = "<<nSum<<endl;  
  19. cout<<"使用同类的对象"<<endl;  
  20. cout<<"sum = "<<one.GetSum()<<endl;  
  21. }  
  22. int CSum::nSum = 0;    
  23. void main()  
  24. {  
  25. CSum one(10, 2);  
  26. CSum::ShowData(one);  
  27. one.SetSum(9);  
  28. one.ShowData(one);  

运行结果为:

  1. 直接使用静态成员  
  2. sum = 12  
  3. 使用同类的对象  
  4. sum = 12  
  5. 直接使用静态成员  
  6. sum = 9  
  7. 使用同类的对象  
  8. sum = 9 

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

回书目   上一节   下一节

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇1.4.1 虚函数 下一篇1.1.1 面向对象程序设计与C++语言

评论

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