信管14:静态成员函数示例

在一个类中,将一个数据成员说明为static,这种成员称为静态数据成员。

与一般的数据成员不同,无论建立多少个类的对象,都只有一个静态数据成员的拷贝。也就是说,静态数据成员是所有对象共享的数据,不属于哪一个对象,从而实现了同一个类的不同对象之间的数据共享

说明:

(1) 静态数据成员属于类,或者更准确地说,是属于类中一个对象集合,而不像普通数据成员那样属于某一对象,因此可以使用“类名∷”访问静态的数据成员。用类名访问静态数据成员的格式如下:

   类名::静态数据成员名

(2) 静态数据成员初始化应在类外单独进行,而且应在定义对象之前进行。所以一般在主函数之前,类声明之后的特殊地带为它提供定义和初始化。

(3) 对象定义后,公有的静态数据成员,也可以通过对象进行访问,也可以在对象定义之前通过类名来访问。

一般格式:  类名::静态数据成员名

#include<iostream>
#include<string>
using namespace std;
class Student{
  private:	 
   string name;       
   float score;     
   static int count; //静态数据成员,
   static float sum; //静态数据成员
   static float ave; //静态数据成员       
  public:
   Student(string name1, float score1); 
   void show();     
   static void show_count_sum_ave();     //静态成员函数,
};    

Student::Student(string name1,float score1 )
{ name=name1; 
  score=score1; 
  ++count; 
  sum=sum+score;                     
  ave=sum/count; 
} 

void Student::show()
{cout<<"姓名:"<<name;cout<<"    成绩:"<<score<<endl;}

void Student::show_count_sum_ave() 
{cout<<"学生人数:"<<count<<endl;
 cout<<"累加成绩:"<<sum<<endl;  
 cout<<"平均成绩:"<<ave<<endl;
}

 int Student::count=0; float Student::sum=0.0;   //通过类来访问静态成员。

 float Student::ave=0.0; 

 int main()
 { Student stu1("Liming",90),stu2("zhahai",100); 
   //Student stu3;                             //如这样来定义一个对象,为什么会出错,如何改正?

   stu1.show();      
   stu2.show();  
   
   cout<<endl;
   Student::show_count_sum_ave();
   system("pause");
   return 0;
 }

阅读程序回答:

1.分析程序运行结果。

2.解决程序的注释里说明的问题。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值