1. 静态成员
静态成员就是在成员变量和成员函数前加上关键字static,成为静态成员。
静态成员分为:
1.静态成员变量,有访问权限
1.所有对象共享同一份数据
2.在编译阶段分配内存(全局区)
3.类内声明,类外初始化
2.静态成员函数,有访问权限
1.所有对象共享同一个函数
2.静态成员函数只能访问静态成员变量
1.静态成员变量
//静态成员变量
class Person{
public:
//所有对象共享一份数据
//在编译阶段分配内存(全局区)
//类内声明,类外初始化操作
static int m_A;
//静态成员变量也是有访问权限的
private:
static int m_B;
};
//类外初始化
int Person::m_A = 100;
int Person::m_B = 200;
void main(){
Person p1;
p1.m_A = 100;//此时m_A为100
Person p2;
p2.m_A = 200;//此时m_A为200
/*静态成员变量不属于某个对象上,所有对象都共享一份数据,
因此静态成员变量有两种访问方式。*/
//1.通过对象进行访问
cout << p1.m_A << endl;
//2.通过类名进行访问
cout <<Person::m_A<<endl;
//静态成员变量也是有访问权限的
cout <<Person::m_B<<endl;//报错,m_B是私有权限访问不到
}
2.静态成员函数
//静态成员函数,也是有访问权限的
//所有对象共享一个函数
//静态成员函数只能访问静态成员变量
class Person{
public:
int m_B;
//静态成员变量,类内声明
static int m_A;
//静态成员函数
static void func(){
m_A = 200;//可以
m_B = 200//报错,
//静态成员函数只可以访问静态成员变量,非静态不可以
cout<<"static void func"<<endl;
}
};
//类外初始化
int Person::m_A = 100;
void main(){
//两种访问方式
//1.通过对象访问
Person p;
p.func();
//2.通过类名访问
Person::func();
}