静态成员
静态成员就是在成员变量和成员函数前加上关键字static,称为静态成员。
静态成员变量:
所有对象共享同一份数据
在编译阶段分配内存
类内声明,类外初始化
静态成员函数:
所有对象共享同一个函数
静态成员函数只能访问静态成员变量
类内声明,类外初始化
#include<iostream>
using namespace std;
class person
{
//1.所有对象共享同一份数据
//2.在编译阶段分配内存
//3.类内声明,类外初始化
public:
static int m_A;
};
void test()
{
person p;
cout << p.m_A << endl;
}
int main()
{
test();
system("pause");
return 0;
}
会报错:
需要在类外声明:
int person::m_A = 100;
静态成员变量 不属于某个对象上,所有对象都共享同一份文件
因此静态成员变量有两种访问方式
//1.通过对象进行访问
person p;
cout << p.m_A << endl;
(只有静态成员能使用 方式2 访问)
//2.通过类名进行访问
cout<<person::m_A<<endl;
静态成员函数
//1.所有对象共享同一个函数
//2.静态成员函数只能访问静态成员变量
访问方式
//1.通过对象访问
person p;
p.func();
//2.通过类名访问
person::func();
对这里能通过类名访问的理解:
因为静态成员函数不属于某一个对象上面,大家共享同一个。无需创建对象就可以访问。