static
把一个类的成员说明为static时,那么用这个类定义的多个对象共享这个成员(修改是同步的)。
静态数据成员:
static的成员变量,在对象之前被创建。它可以被静态或是非静态成员函数访问。返过来,非静态成员变量,在静态成员函数中不可被访问。
class A { public: private: static int a; }; int A:: a = 0; //初始化
class A { public: static int fun() //静态成员函数 { int c = b; /* 在静态成员函数中访问非静态成员变量会出错。因为静态成员函数是多个对象共享的 那么在静态成员函数中去引用非静态成员变量,那么编译器不能识别是哪个对象的成员函数。 */ return a; } private: static int a; //静态成员变量 int b; };
那么静态成员函数能够访问的成员变量是什么呢——静态成员变量。
可以使用类名来调用的成员函数——静态成员函数。
A:: fun();
内在的趣味,表面的繁琐