前言:
此刻各位老铁们对“静态数据成员是类的所有对象共享的数据吗”大概比较看重,同学们都想要知道一些“静态数据成员是类的所有对象共享的数据吗”的相关知识。那么小编在网摘上汇集了一些对于“静态数据成员是类的所有对象共享的数据吗””的相关知识,希望同学们能喜欢,朋友们快快来学习一下吧!静态成员就是在成员变量和成员函数前加上关键字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();}
标签: #静态数据成员是类的所有对象共享的数据吗