C++类的静态成员【需要注意的几点】

静态数据成员的使用方法和注意事项如下:

1、静态数据成员在定义或说明时前面加关键字static。

2、静态成员初始化与一般数据成员初始化不同。静态数据成员初始化的格式如下:
    <数据类型><类名>::<静态数据成员名>=<值>
  这表明:
        (1) 初始化在类体外进行,而前面不加static,以免与一般静态变量或对象相混淆。
        (2) 初始化时不加该成员的访问权限控制符private,public等。
        (3) 初始化时使用作用域运算符来标明它所属类,因此,静态数据成员是类的成员,而不是对象的成员。

3、静态数据成员是静态存储的,它是静态生存期,必须对它进行初始化

4、引用静态数据成员时,采用如下格式:
       <类名>::<静态成员名>
  如果静态数据成员的访问权限允许的话(即public的成员),可在程序中,按上述格式来引用静态数据成员。

下面举一例子,说明静态数据成员的应用:

#include <iostream>
using namespace std;
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();
}


从输出结果可以看到Sum的值对M对象和对N对象都是相等的。这是因为在初始化M对象时,将M对象的三个int型数据成员的值求和后赋给了Sum,于是Sum保存了该值。在初始化N对象时,对将N对象的三个int型数据成员的值求和后又加到Sum已有的值上,于是Sum将保存另后的值。所以,不论是通过对象M还是通过对象N来引用的值都是一样的,即为34。

原文地址:https://www.cnblogs.com/jinsedemaitian/p/5589098.html