C++类中静态成员的使用

来源:互联网 发布:企业信息采集软件 编辑:程序博客网 时间:2024/06/14 16:09

        在C++的类里面可以定义静态成员变量和静态成员函数,静态成员属于整个类所有,不依赖任何对象,可以通过类名和对象名两种方式访问public静态成员。

       静态成员变量的定义:

       通过static关键字修饰,需要在类外单独分配空间,在全局数据区。形式为:Type Classname::varname;

     类的所有对象共享静态成员,因此在统计类的对象个数时可以使用静态成员变量:       

#include <iostream>class Test{private:static int count;public:Test(){count++;}~Test(){count--;}static int GetCount(){return count;}};int Test::count = 0;int main(){Test t1;Test t2;std::cout<<"The number of Objects: "<<Test::GetCount()<<std::endl;Test t[10];std::cout<<"The number of Objects: "<<Test::GetCount()<<std::endl;return 0;}


 

静态成员函数和普通成员函数的区别:

      静态成员函数不包含指向具体对象的指针;普通成员函数包含一个指向具体对象的指针。

      public静态成员函数可以直接由类名访问,普通成员函数只能由对象访问。  

应用:用于对象数目的控制,这里控制程序里只能有一个该类类型的对象:

#include <iostream>using namespace std;class singletom{private:static singletom* count;singletom() {cout<<"I'm a private singletom()"<<endl;}public:static singletom* getObjetc(){if(count == NULL){count = new singletom;}return count;}~singletom(){//delete count;    //这里不能删除这个静态指针成员变量}};singletom* singletom::count = NULL;int main(){singletom *s1 = singletom::getObjetc();singletom *s2 = singletom::getObjetc();singletom *s3 = singletom::getObjetc();cout<<s1<<"\t"<<s2<<"\t"<<s3<<endl;return 0;}


打印出的s1,s2,s3的值是一样的,都指向了同一个对象。