静态成员
一、静态数据成员
目的:实现多个对象之间的数据共享。是类的所有对象中共享的成员。
可以节省内存,是所有对象所公有的。只存储一处,供所有对象共用。
用法和注意事项:
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
评论