静态成员变量在一个类的所有实例中是共享的。它们是全局数据和成员数据之间的折中。
可以把一个静态成员看作是属于类的,而不是属于对象的。通常的成员数据是每个对象一个,而静态成员数据是每个类一个。
静态成员函数像静态成员变量一样:它们不是存在于某个对象中,而是存在于这个类的作用域之内。这样,可以在没有那个类的对象的情况下调用它们。
下面的程序声明了一个带有静态成员变量catNum和静态成员函数CatNum的Cat对象。这个变量记录创建了多少个Cat对象。
#include<iostream> using namespace std; class Cat{ public: Cat(){catNum++;}; virtual ~Cat(){catNum--;} static int CatNum(){return catNum;} private: static int catNum; }; int Cat::catNum=0; int main(){ Cat* p[5]; for (int i=0;i<5;i++){ p[i]=new Cat; cout<<Cat::CatNum()<<endl; } cout<<endl; for (i=0;i<5;i++){ delete p[i]; cout<<Cat::CatNum()<<endl; } return 0; }
|
阅读(870) | 评论(0) | 转发(0) |