静态成员就是在成员变量和成员函数前加上关键字static,称为静态成员。
静态成员分为:
1 静态成员变量
- 所有对象共享同一份数据
- 在编译阶段分配内存
- 类内声明,类外初始化
2 静态成员函数
- 所有对象共享同一个函数
- 静态成员函数只能访问静态成员变量
class Person
{
public:
//静态成员函数
static void func()
{
m_A = 100;//静态成员函数可以访问 静态成员变量
//m_B = 2;报错,由于是非静态成员变量,静态成员函数无法访问
cout << "static void func 调用" << endl;
}
//静态成员变量
static int m_A;//类内声明
//非静态成员变量
int m_B;
//静态成员函数也是有访问权限的
private:
static void func2()
{
cout << "static void func2 调用" << endl;
}
};
int Person::m_A = 0;//类外初始化
//有两种访问方式
void test01()
{
//1.通过对象访问
Person p;
p.func();
//2.通过类名访问
Person::func();
// Person::func2();报错,类外访问不到私有的静态成员函数
}