一.概念
用static修饰的成员变量称为类的静态成员变量,static修饰的成员函数称为类的静态成员函数。
如何声明和定义static成员
声明:
在定义类时进行声明
定义(类外定义):
static成员的定义/初始化必须在类外:
或者给一个具体的值:
为什么必须在类外初始化?因为static不独属于某个对象,它是类变量,不管创建几个实例对象,static成员都只有一份,所以static成员不会走初始化列表,所以无法在类内初始化
二.特性
1.静态成员被对象共享,存放在静态区
2.静态成员变量必须在类外定义,定义时不加static关键字,类中只是简单的声明
3.类静态成员既可以用对象访问,也可以直接用类名访问
4.静态成员也受public等访问修饰限定符的限制
5.静态成员函数没有this指针,不能访问任何非静态成员变量,不能直接调用任何非静态成员函数
实际上说的是this指针不存在,不能用this调用函数。但可以实例化一个对象,用对象去调用非静态函数