12.2.9.1 静态成员变量
静态成员变量就是在属性定义前加上关键字static,它有以下特点:
- 所有对象共享同一份数据;
- 在编译阶段分配内存;
- 类内声明,类外初始化。
#include<iostream>
#include<string>
using namespace std;
class Person
{
public:
static int m_Age;
};
int Person::m_Age = 18;
int main()
{
Person p1;
cout << p1.m_Age << endl;
Person p2;
p2.m_Age = 20;
cout << p1.m_Age << endl;
system("pause");
return 0;
}
在main函数中,我们创建了一个p1,输出年龄为18,这里一切正常;
然后又创建了p2,再把p2的年龄改为20,再输出p1的年龄,发现p1的年龄也变成了20。
说明了静态成员变量共享一份数据。
也正是有这一点,静态成员变量有两种访问方式:
- 通过一个实例化访问
Person p1;
cout << p1.m_Age;
- 通过类名直接访问
cout << Person::m_Age;
当然,访问的前提都是这个成员变量的访问权限为public,如果是私有则不能访问。