5.1静态数据成员 ①类名:静态数据成员名,如 LIST:head; ②对象名.类名:静态数据成员名,如 a.LIST:head; ③对象名.静态数据成员名如a.head
5.1 静态数据成员 ① 类名::静态数据成员名,如 LIST::head; ②对象名.类名::静态数据成员名,如 a.LIST::head; ③对象名. 静态数据成员名 如a.head
5.1静态数据成员 静态数据成员为所有对象所共享,因 此,任何对象对静态数据成员的修改都 会影响其它对象对该静态数据成员的访 问值 类中静态数据成员的说明为引用性说明, 必须进行定义性说明,并且只能在类的体 外进行唯一的一次说明.注意在体外定义 静态成员时,不需要static关键字
5.1 静态数据成员 静态数据成员为所有对象所共享,因 此,任何对象对静态数据成员的修改都 会影响其它对象对该静态数据成员的访 问值。 类中静态数据成员的说明为引用性说明, 必须进行定义性说明,并且只能在类的体 外进行唯一的一次说明. 注意在体外定义 静态成员时,不需要static关键字
【例5.2】定义描述个人信息的类,使每个人都 共享人口数量这一信息。 #include <iostream.h> ■ HUMAN:HUMAN(char #include <string.h> *n,char s,int a) class HUMAN char name[11]; ◆ strncpy(name,n,10); char sex; ■ sex=s; int age; ■ age=a; public: HUMAN:total++; static int total; ◆ HUMAN(char *n, HUMAN:~HUMAN() char s,int a); HUMAN() HUMAN:total -- i int HUMAN:total=0;
【例5.2】定义描述个人信息的类,使每个人都 共享人口数量这一信息。 #include <iostream.h> #include <string.h> class HUMAN{ char name[11]; char sex; int age; public: static int total; HUMAN(char *n, char s, int a); ~HUMAN( ); }; int HUMAN::total=0; HUMAN::HUMAN(char *n, char s, int a) { strncpy(name, n, 10); sex=s; age=a; HUMAN::total++; } HUMAN::~HUMAN( ) { HUMAN::total – – ; }
【例5.2】定义描述个人信息的类,使每个 人都共享人口数量这一信息。 void main(void) cout<<"HUMAN::total="<<HUMAN::total<<"\n"; cout<<"sizeof(int)="<<sizeof(int)<<"In"; HUMAN x("Xi",'M',20); ■ cout<<"sizeof(x)="<<sizeof(x)<<"\n"; cout<<"sizeof(HUMAN)="<<sizeof(HUMAN)<<"\n"; cout<<"HUMAN:total="<<HUMAN:total; ■ cout<<"x.total="<<x.total<<"\n"; HUMAN y("Yi",'F,18);/同时改变x.total和y.total cout<<"HUMAN:total="<<HUMAN:total; ■ cout<<"x.total="<<x.total; cout<<"y.total="<<y.total<<"n"; ■
【例5.2】定义描述个人信息的类,使每个 人都共享人口数量这一信息。 void main(void) { cout<<"HUMAN::total="<<HUMAN::total<<"\n"; cout<<"sizeof(int)="<<sizeof(int)<<"\n"; HUMAN x("Xi", 'M', 20); cout<<"sizeof(x)="<<sizeof(x)<<"\n"; cout<<"sizeof(HUMAN)="<<sizeof(HUMAN)<<"\n"; cout<<"HUMAN::total="<<HUMAN::total; cout<<" x.total="<<x.total<<"\n"; HUMAN y("Yi", 'F', 18);//同时改变x.total和y.total cout<<"HUMAN::total="<<HUMAN::total; cout<<" x.total="<<x.total; cout<<" y.total="<<y.total<<"\n"; }
5.1静态数据成员 ■输出: ■HUMAN:total:=O sizeof(int)=4 ■sizeof(x)=16 ■sizeof(HUMAN)=16 HUMAN:total=1 x.total=1 HUMAN:total=2 x.total=2 y.total=2
5.1 静态数据成员 输出: HUMAN::total=0 sizeof(int)=4 sizeof(x)=16 sizeof(HUMAN)=16 HUMAN::total=1 x.total=1 HUMAN::total=2 x.total=2 y.total=2