1.静态成员变量要在类外初始化,如:
int Person::m_nCount = 0; //初始化静态成员变量
2.可以通过类名或者类对象访问静态成员变量,如:
cout<<Person::m_nCount<<","<<e1.m_nCount<<endl; //通过类或者对象访问静态成员
3.可以通过类名或者类对象调用类静态成员函数,如:
cout<<Person::GetCount()<<","<<Person::GetID(e1)<<endl;//通过类调用静态成员函数
cout<<e1.GetCount()<<","<<e1.GetID(e1)<<endl;//通过对象调用静态成员函数
4.类对象共享静态成员变量,如:
cout<<e1.GetCount()<<","<<e1.GetID(e1)<<endl;//e1,e2共享静态成员变量m_nCount
例子:
#include <iostream> #include <string.h> using namespace std; class Person { public: char m_strName[20]; long m_ID; static int m_nCount; //静态成员变量 public: Person(char *, long); //构造函数 static int GetCount(); //静态成员函数 static long GetID(Person); //对象作为静态成员函数的参数 }; Person::Person(char * strName, long ID) { strcpy(m_strName,strName); m_ID = ID; ++m_nCount; //对象数目+1 } int Person::GetCount() { return m_nCount; //访问静态成员变量 } long Person::GetID(Person x) { return x.m_ID; //访问非静态成员 } int Person::m_nCount = 0; //初始化静态成员变量 int main() { Person e1("Zerone",1208010201); cout<<Person::m_nCount<<","<<e1.m_nCount<<endl; //通过类或者对象访问静态成员 cout<<Person::GetCount()<<","<<Person::GetID(e1)<<endl;//通过类调用静态成员函数 cout<<e1.GetCount()<<","<<e1.GetID(e1)<<endl;//通过对象调用静态成员函数 Person e2("Analyst",1208010202); cout<<Person::GetCount()<<","<<Person::GetID(e2)<<endl; cout<<e2.GetCount()<<","<<e2.GetID(e2)<<endl; cout<<e1.GetCount()<<","<<e1.GetID(e1)<<endl;//e1,e2共享静态成员变量m_nCount return 0; }
程序运行显示结果: