几点总结

1、类内的static成员变量全局可见,需要类内声明,类外初始化

2、static成员函数只能调用static成员变量、static成员函数和类外部的其他函数

3、static成员仍受private关键字限制(private成员函数只能不能主动调用,只能被类内的其他成员函数调用)

例子:

#include <cstdio>
#include <iostream>

using namespace std;

class A{
public:
static void f1(){
std::cout << "f1() called" << std::endl;
f2();
cout << "===a: " << A::a << endl;
}
static int a;
private:
static void f2(){

cout << "f2() is called" << endl;
cout << a << endl;
}


};

int A::a = 5;


int main()
{
A::f1();
cout << "main: " << A::a << endl;
// A::f2();
}