C++类中的静态成员
C++类中的静态成员:(所有问题的关键都在其的“共享性”上)
关键词:static
静态成员变量:
//静态成员变量 //所有对象"共享"同一份数据 (哪一个对象进行了更改其它也会跟着一起变,源于其“共享性”) //在 编译阶段 分配内存 (还没有双击exe文件之前 所在全局区)
使用方法:类内声明、类外初始化
访问方式:通过对象进行访问 或 者通过类名进行访问
参考代码:
#include <iostream> using namespace std; class Person { public: //此为类内声明 static int m_A; //更换权限是因为 静态成员变量也是有访问权限的 private: //此为类内声明 static int m_B; }; //此为类外初始化 //注意:初始化时一定要声明,这个静态成员变量所属的作用域。 int Person::m_A = 100; int Person::m_B = 200; //void test01() //{ // Person P; // cout << P.m_A << endl; // // Person P2; // P2.m_A = 200; // cout << P.m_A << endl; //改变后数据改变了 //} void test01() { //静态成员变量 不属于某个对象上,所有对象都共享同一份数据 //因此静态成员变量有两种访问方式 //1、通过对象进行访问 /*Person P; cout << P.m_A << endl;*/ //2、通过类名进行访问 因为共享 所以不需要通过构建一个对象 就可以访问 cout << Person::m_A << endl; //cout << Person::m_B << endl; 私有权限无法访问 } int main() { test01(); system("pause"); return 0; }
静态成员函数:
//静态成员函数 //所有对象"共享"一个函数 //静态成员函数只能访问静态成员变量
使用方法:类内声明与定义
访问方式:通过对象进行访问 或 者通过类名进行访问 且 “其本身只能够访问静态成员变量”
参考代码:
#include <iostream> using namespace std; //静态成员函数 //所有对象"共享"一个函数 //静态成员函数只能访问静态成员变量 class Person { //同样静态成员函数 也是有访问权限的 public: //原因:静态成员函数是可以通过类名来进行访问的 是共享的 //如果在 静态成员函数里面有非静态成员变量 //那么系统会不清楚 所更改的是哪一个对象的 非静态成员变量 //静态成员函数 static void func() { m_A = 100; //静态成员函数是可以访问静态成员变量 (共享的 不需要知道是哪一个的) //m_B = 200; //静态成员函数 不可以访问 非静态成员变量 无法区分到底是哪一个对象的m_B cout << "static void func调用" << endl; } static int m_A; //静态成员变量 int m_B; //非静态成员变量 private: static void func2() { cout << "static void func的调用" << endl; } }; int Person::m_A = 0; void test01() { //1、通过对象访问 Person P; P.func(); //2、通过类名访问 Person::func(); //Person::func2(); } int main() { test01(); system("pause"); return 0; }
本文作者:如此而已~~~
本文链接:https://www.cnblogs.com/fragmentary/p/16417910.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步