C++静态成员
静态成员
前言
静态成员就是在成员变量和成员函数前加上关键字static,称为静态成员
静态成员分为:
- 静态成员变量
- 所有对象共享同一份数据
- 在编译阶段分配内存
- 类内声明,类外初始化
- 静态成员函数
- 所有对象共享同一个函数
- 静态成员函数只能访问静态成员变量
1.静态成员变量
1.1静态成员的声明
静态成员变量相比于普通成员变量而言,就形式上,类型说明符前面加上一个 static。但是,声明一个静态成员变量,这还不够,还要在类的外面进行初始化。
1.2静态成员变量的特点
- 1 在编译阶段分配内存
- 2 类内声明,类外初始化
- 3 所有对象共享同一份数据
- 静态成员变量的生命期不依赖于任何对象,为程序的生命周期
- 静态成员变量需要在类外单独分配空间
静态成员变量有一个非常重要的特点,就是所有对象共享同一片内存。
小结 :静态成员变量存储在静态区(全局区),是在编译阶段就已经存在的,它的存储位置和类的存储位置不一样。
1.3静态成员变量访问方式
由于静态成员变量是所有对象共享的,说明它不单独属于某一个对象,正因如此,静态成员变量的访问方式有两种
1.3.1 通过类名进行访问
1.3.2 通过对象进行访问
提醒:普通成员变量是不可以通过类进行访问的,自己想想为什么
1.4静态成员变量具有访问权限
如上图所示:
m_A 这个静态成员变量是可以通过类名或是对象进行访问,但m_B静态成员变量只能通过类内进行访问。
2.静态成员函数
2.1静态成员函数的定义
静态成员函数相比于普通成员函数,形式上,就是在类型说明符前加上static
2.2静态成员函数的特点
- 程序共享同一个函数
- 静态成员函数只能访问静态成员变量
- 静态成员函数不属于某一个对象
2.3静态成员函数的调用方式
2.3.1 通过类名进行调用
2.3.2 通过对象进行调用
2.4静态成员函数具有访问权限
如果一个静态成员函数不是在public访问权限下,是不可以通过类名或是对象对其进行调用。