静态成员包括静态成员变量和静态成员函数,用static关键词
一.静态成员变量
包括以下几个特点:
1.所有对象共享同一份数据
2.在编译阶段分配内存
3.必须在类内进行声明,在类外进行定义或初始化
4.有访问权限(在类内private中进行定义,在类外无法访问)
例如:
结果为:
可见,p1和p2尽管为student的两个对象,其共享同一份数据,即p1和p2的name属性是同一个
总之,静态成员变量不属于某个对象,而是该类所有对象共有的
所以,访问静态变量的方式有两种:
1.直接通过类进行访问:
(因为静态成员是全局变量/函数,生命周期是整个程序的生命周期,所以我们不需要创建对象就可以使用静态成员;)
可正常输出“Tony”
2.通过对象进行访问
也可以正常输出
二.静态成员函数
定义很简单,只要在定义函数时在函数名前+static
有以下几个特点:
1.所有对象共享同一个函数(与上文类似,不在举例)
2.静态成员函数只能访问静态成员变量
3.有访问权限(在类内private中进行定义,在类外无法访问)
例如:
这里因为在类中name不是静态成员变量,故无法使用静态成员函数进行访问
而:
这样name也成为了静态成员变量,可以进行访问
同时,静态成员函数和静态成员变量一样,可以通过类或对象的方式进行调用,也都有着访问权限
静态成员本质就是利用static将其绑定为全局变量或全局函数
更多关于static的用法参见: