定义格式:static 类型名 成员名 ;
初始化格式:类型 类名::成员名=初始值;
一.
#include<iostream>
using namespace std;
#include<iomanip>
#include<string.h>
class student{
private:
char *name;
int num;
float score;
static int total;
public:
student(char *na,int nu,float sco);
void print();
};
int student::total=0;
int main()
{
student s1("小王",1,85);
s1.print();
student s2("李四",2,90);
s2.print();
student s3("王五",3,89);
s3.print();
return 0;
}
student::student(char *na,int nu,float sco)
{
name=new char[strlen(na)+1];
strcpy(name,na);
num=nu;
score=sco;
total++;
}
void student::print()
{
cout<<"第"<<total<<"个学生:"<<endl<<name<<setw(4)<<num<<setw(4)<<score<<endl;
cout<<"总人数是:"<<total<<endl;
}
运行结果:
第1个学生:
小王 1 85
总人数是:1
第2个学生:
李四 2 90
总人数是:2
第3个学生:
王五 3 89
总人数是:3
二.静态数据成员的应用。
#include<iostream>
using namespace std;
class A{
private:
static int a;
int b;
public:
A(int i,int j);
void print();
};
int A::a;
int main()
{
A a1(1,1);
a1.print();
A a2(2,2);
a2.print();
a1.print();
return 0;
}
A::A(int i,int j)
{
a=i;
b=j;
}
void A::print()
{
cout<<"this static a is:"<<a<<endl;
cout<<"this not static is:"<<b<<endl;
}
运行结果:
this static a is:1
this not static is:1
this static a is:2
this not static is:2
this static a is:2
this not static is:1