C++Note 静态成员

C++文件执行顺序:预处理-编译-汇编-链接

静态成员就是在成员变量和成员函数前加上关键字static,称为静态成员

静态成员分为:

  静态成员变量

    所有对象共享同一份数据

    在编译阶段分配内存//分配在全局区

    类内声明,类外初始化

复制代码
 1 #include <iostream>
 2 using namespace std;
 3 
 4 class Person
 5 {
 6 public:
 7     //1.所有对象都共享同一份数据
 8     //2.编译阶段就分配内存
 9     //3.类内声明,类外初始化操作
10     static int m_A;
11     //静态成员变量有访问权限的
12 private:
13     static int m_B;//类外私有权限访问不到
14 };
15 int Person::m_A = 100;//类外初始化
16 int Person::m_B = 200;
17 void test01()
18 {
19     Person p;
20     cout << p.m_A << endl;//100
21     Person p2;
22     p2.m_A = 200;
23     cout << p.m_A << endl;//200   用p访问  数据共享  p和p2的(m_A)地址相同
24 }
25 void test02()
26 {
27     //静态成员变量 不属于某个对象上  所有对象都共享同一份数据
28     //因此静态成员变量有两种访问方式
29 
30     //1.通过对象进行访问
31     Person p;
32     cout << p.m_A << endl;//100
33     //2.通过类名进行访问
34     cout << Person::m_A << endl;//100
35 }
36 
37 int main() 
38 {
39     //test01();
40     test02();
41     system("pause");
42     return 0;
43 }
复制代码

静态成员函数

  所有对象共享同一个函数

  静态成员函数只能访问静态成员变量

复制代码
 1 #include <iostream>
 2 using namespace std;
 3 //静态成员函数
 4 //所有对象共享同一个函数
 5 //静态成员函数只能访问静态成员变量
 6 class Person
 7 {
 8 public:
 9     static void func()//静态成员函数
10     {
11         m_A = 200;//静态成员函数可以访问静态成员变量   数据共享一份  可以识别
12         //m_B = 200;//静态成员函数不可以访问 非静态成员变量  无法区分到底是那个对象的m_B
13         cout << "static void func调用" << endl;
14     }
15     static int m_A;//静态成员变量
16     int m_B;//非静态成员变量
17 };
18 int Person::m_A = 100;
19 
20 void test01()
21 {
22     //1.通过对象访问
23     Person p;
24     p.func();
25     //2.通过类名访问
26     Person::func();
27 }
28 
29 int main() 
30 {
31     test01();
32     system("pause");
33     return 0;
34 }
复制代码

 

posted on   廿陆  阅读(4)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示