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,如果是私有则不能访问。