static成员变量表示在类中是共享存储区域的,即任意一个对象对static成员进行操作都会影响同一类其他对象该成员的值。
同时应当注意的是静态成员变量必须初始化,但是不建议放在构造函数中初始化(因为没构建一个对象就会更改其值),最佳
的初始化方式是在类以外的其他地方使用类访问符"::"进行初始化。
例如:
#include<iostream>
using namespace std;
class static_example
{
private:
static int number;
int x;
public:
static_example(){
number = number + 1;
x = number;
}
~static_example(){
number = number - 1;
x = number;
}
void display(){
cout<<"x = "<<x<<endl;
cout<<"number = "<<number<<endl;
}
};
int static_example::number = 0; //静态成员变量的初始化
void main(void)
{
static_example e1;
e1.display();
static_example e2,e3,e4;
e2.display();
e3.display();
e4.display();
cin.get();
}
输出结果为
x = 1;
number = 1;
x = 2;
number = 4;
x = 3;
number = 4;
x = 4;
number = 4;
C++中可以编写static成员函数,静态成员函数的好处就是可以不创建类对象也可以调用该成员函数。