静态成员
静态成员就是在成员变量和成员函数前加上关键字static**
静态成员变量
1.所有对象共享一份数据
2.在编译阶段分配内存
3.类内声明,类外初始化
class Person
{
public :
//类内声明
static int ma;
//静态成员变量也是有访问权限的
private:
static int mb;
};
//类外初始化
int Person::ma = 100;
int Person::mb = 200;
void test01()
{
Person p;
cout << p.ma << endl; //100
//用p2修改
Person p2;
p2.ma = 200;
//用p访问
cout << p.ma << endl; //100? 200?
}
void test02()
{
//静态成员变量不属于某个对象,所有对象共享一份数据
//两种访问方式
//通过对象进行访问
Person p;
cout << p.ma << endl;
//2.通过类名进行访问
cout << Person::ma << endl;
cout << Person::mb << endl; // 错误 类外访问不到私有静态成员变量
}
int main ()
{
test01();
}
静态成员函数
1.所有对象共享一份函数
2.静态抽烟函数只能访问静态成员变量
class Person
{
public :
//静态成员函数
static void func()
{
ma = 100; //静态成员函数可以访问静态成员变量
mb = 200; // 直接报错 静态成员函数不可以访问非静态成员变量
cout << "static void func调用" << enfl;
}
static int ma;
int mb;
private:
static void func2()
{
cout << "static void func2调用" << endl;
}
};
int Person::ma= 0;
//两种访问方式
void test01()
{
//通过对象调用
Person p;
p.func();
//通过类名访问
Person::func();
Perosn::func2(); //报错 类外访问不到私有静态成员函数
}
int main()
{
test01();
}