C++中这三类关系如下:
首先要明白:静态成员函数是可以调用非静态数据成员的,具体怎么调用,看下面。
class A
{
public:
static void fun ( A a )
{
cout << b <<endl;(错误)
cout << a.b<<endl;(正确)
}
privte:
int b;
}
如上面的例子,假如静态成员函数需要调用非静态数据成员,那么必须要借助具体的某个对象进行调用,为什么呢?
原因:因为静态成员函数和非静态数据成员都是为整个类所属,不是具体的某个对象所特有,对静态成员函数的调用它是没有目的对象的,不像非静态成员函数那样,有个大家所知道的this之类也就是本类的隐式对象去访问非静态成员。因此静态成员函数必须以通过参数对象的方式去访问具体的某个非静态数据成员。
总结:
(1)静态成员函数可以直接调用该类的静态数据成员和非静态成员函数,但是调用非静态数据成员的时候必须通过传对象参数的方式去调用。
(2)一般情况下,(1)也是不建议去这样调用非静态数据成员,静态成员函数主要的作用是为了访问一个类中的静态数据成员,维护对象之间共享的数据。