龙空技术网

【C++编程语言】之 类和对象——静态成员

烦人的星辰 302

前言:

此刻各位老铁们对“静态数据成员是类的所有对象共享的数据吗”大概比较看重,同学们都想要知道一些“静态数据成员是类的所有对象共享的数据吗”的相关知识。那么小编在网摘上汇集了一些对于“静态数据成员是类的所有对象共享的数据吗””的相关知识,希望同学们能喜欢,朋友们快快来学习一下吧!

静态成员就是在成员变量和成员函数前加上关键字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();}

标签: #静态数据成员是类的所有对象共享的数据吗