静态成员 一、静态数据成员 目的:实现多个对象之间的数据共享。是类的所有对象中共享的成员。 可以节省内存,是所有对象所公有的。只存储一处,供所有对象共用。 用法和注意事项: 1、在定义或说明前面加关键字static 2、初始化为如下格式: <数据类型><类名>::<静态数据成员>=<值>; 初始化时不加该成员的访问权限控制符private,public等。 必须对它进行初始化。 3、引用静态数据成员时,采用如下格式: <类名>::<静态成员名> #include<iostream.h>class Myclass{ public: Myclass(int a, int b, int c); void GetNumber(); void GetSum(); private: int A, B, C; static int Sum;};int Myclass::Sum=0;Myclass::Myclass(int a, int b, int c){ A=a; B=b; C=c; Sum+=A+B+C;}void Myclass::GetNumber(){ cout<<"Number="<<A<<","<<B<<","<<C<<endl;}void Myclass::GetSum(){ cout<<"Sum="<<Sum<<endl;} void main(){ Myclass M(3,7,10),N(14,9,11); M.GetNumber(); N.GetNumber(); M.GetSum(); N.GetSum();} 输出: Number=3,7,10 Number=14,9,11 Sum=54 Sum=54 二、静态成员函数 静态成员函数的实现中不能直接引用类中说明的非静态成员,可以引用类中说明的静态成员。如果静态成员函数中要引用非静态成员时,可通过对象来引用。 #include<iostream.h>class M{ public: M(int a){A=a;B+=a;} static void f1(M m); private: int A; static int B;};void M::f1(M m){ cout<<"A="<<m.A<<endl; cout<<"B="<<B<<endl;} int M::B=0;void main(){ M P(5),Q(10); M::f1(P); M::f1(Q);} 输出: A=5 B=15 A=10 B=15

评论