类static成员的两个问题:
如果需要在一个类的各个对象间交互,即需要一个数据对象为整个类而非某个对象服务,这个时候常用类成员来解决问题。
1、静态数据成员要在类外定义。
class TestStatic
{
public:
TestStatic():m_nomalData(20){};
static int TestStaticFunction(TestStatic obj);
private:
static int m_staticData;
int m_nomalData;
};
int TestStatic::m_staticData = 100;
int TestStatic::TestStaticFunction(TestStatic obj)
{
return m_staticData + obj.m_nomalData; //访问类成员的方法(类的私用和公有成员都可以访问)
}
2、类的静态成员函数是属于整个类而非类的对象,所以它没有this指针,这就导致了它仅能访问类的静态数据和静态成员函数,如果一定要访问成员变量,可以在参数中传入对象,通过对象可以访问类的私用和公有成员。