静态成员函数中不允许引用类的非静态成员,但可以访问对象中的非静态成员

代码如下:

#include<iosteam>

class M
{
public:
M(int a)
{
A = a;
B+=a;//这里每调用一次构造函数不就重新刷新一次B了吗?用这种方法记录生成对象的个数??
}


static void f1(M m);

private:
int A;
static int B;

};

void M::f1(M m)
{
cout<<"A="<<m.A;//在静态成员函数中,只能通过对象访问类的非静态成员
cout<<"B="<<B;//B是静态成员,可以在静态成员函数中访问

}

int M::B=0;//一直不明白这里的B不是私有的吗?为什么可以直接访问?是因为这句话没有在任何函数中吗?

void main()
{
M P(5), Q(10);
M::f1(P);
//访问静态成员函数,前面可以用类名或者对象名,下同
M::f1(Q);

}



原文地址:https://www.cnblogs.com/carbs/p/2432029.html