声明为static的类成员,称为类的静态成员;用static修饰的成员变量,称为静态成员变量;用static修饰的成员函数,称为静态成员函数。
静态成员变量一定要在类外进行初始化!
1.静态成员为所有类对象所共享,不属于某个具体的对象,存放在静态区
(它属于整个类,也属于这个类的所有对象,生命周期属于整个程序运行期间)
2.静态成员变量必须在类外定义,定义时不添加static关键字,类中只是声明
3.类静态成员即可用类名::静态成员或者对象.静态成员来访问
4.静态成员函数没有隐藏的this指针,不能访问任何非静态成员
(可以用于通过函数调用获取private的静态成员变量值)
5.静态成员也是类的成员,受public、protected、private访问限定符的限制
将构造函数用private限定,然后在public里定义一个函数调用构造函数负责创建对象。
这样想创建对象需要调用那个函数,但是要调用那个函数又需要一个对象。
这个时候静态就可以上场了,因为静态的可以不用对象来调用。于是我们把那个函数定义为静态的即可完成了。
Q1:静态成员函数可以调用非静态成员函数吗?
A1:不行,因为他没有this。
Q2:非静态成员函数可以调用类的静态成员函数吗?
A2:可以,因为静态的属于整个类。