我们学到的类对象的成员变量一般都是这个对象专属,不能为其他对象所共有。然而在实际编程中我们需要统计对象的数量等问题,所以就必须设置一个类的对象所共有的变量,就是静态成员变量。
首先通过一个简单的例程 说明静态成员如何使用。
#include<iostream>
using namespace std;
class A
{
public:
A(int num): it(num)
{
total++;
}
virtual ~A()
{
total--;
}
virtual int get()
{
return it;
}
virtual void set(int age)
{
it = age;
}
static int total;
private:
int it;
};
int A::total = 0;
int main()
{
const int max = 5;
int i;
A *a[max];
for(i = 0; i< max;i++)
a[i] = new A(i);
for(i = 0; i< max; i++)
{
cout<<"该类有"<<A::total<<"个对象"<<endl;
cout<<"正在删除第"<<a[i]->get()<<"个对象。\n";
delete a[i];
}
return 0;
}
程序执行的结果是:
1、静态成员变量必须属于类的成员变量,不属于单个对象。
2、静态成员变量必须在全局定义。
3、静态成员变量的使用方式:
A::total;
4、静态成员变量在对象存在之前就存在着。
静态成员函数和静态成员变量一样,不属于任何一个对象。
用一个程序来说明如使用静态成员函数。
#include<iostream>
using namespace std;
class A
{
public:
void static show()
{
cout<<A::n;
n++;
}
private:
static int n;
};
int A::n = 0;
int main()
{
int i;
for(i =0; i< 5; i++)
{
A::show();
cout<<endl;
}
return 0;
}
程序执行的结果是:
注意:
1、由于静态成员函数是属于整个类的,所以不能访问某个对象的成员变量。因为它没有指向对象的this指针。
2、静态成员函数不能说明为虚函数。