静态成员变量和静态成员函数的使用

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;
}


程序运行显示结果:


你可能感兴趣的:(静态成员变量和静态成员函数的使用)