通常情况下我们访问一个类的静态成员数据,我们会用‘::’,这个类域解析符来来访问静态数据。例子:
class b
{
public:
static int a;
int& geta(){ return a };
}
int main()
{
b::a = 3;
return 0;
}
但如果,我们将上面例子中的静态成员变量声明为私有的,用类域解析符就不能访问了(a如果是私有的),这时我们不得不采用以下两种方法访问它:
1:我们不得不创建一个类实例来访问他( b B; c = B->geta();)。
2:((b*)0)->geta(){ return a }
第一种方法,会影响性能
第二种方法,存在安全隐患。
为了解决这个问题,c++引入了静态成员函数,这也是为什么静态成员函数只能访问静态成员数据,它就是为了解决静态成员数据的这个问题而被提出来的。