微软OneNote客户预览版学习工具下载(暂未上线):教学好帮手
523
2022-05-30
【C++深度剖析学习总结】 20 类的静态成员变量和类的静态成员函数
类的静态成员变量
1.成员变量的回顾
通过对象名能够访问public成员变量
每个对象的成员变量都是专属的
成员变量不能在对象之间共享
2.新的需求
统计在程序运行期间某个类的对象数目
保证程序的安全性(不能使用全局变量)
随时可以获取当前对象的数目
实验1 解决方案的尝试(失败的解决方案)
#include
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
3.静态成员变量—开始介绍新概念
在C++中可以定义静态成员变量
静态成员变量属于整个类所有
静态成员变量的生命期不依赖于任何对象
可以通过类名直接访问公有静态成员变量
所有对象共享类的静态成员变量
可以通过对象名访问公有静态成员变量
静态成员变量的特性
在定义时直接通过static关键字修饰
静态成员变量需要在类外单独分配空间
静态成员变量在程序内部位于全局数据区
语法规则:
Type ClassName::VarName = value;
实验2 静态成员变量的使用
#include
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
小结
类中可以通过static关键定义静态成员变量
静态成员变量隶属于类所有
每一个对象都可以访问静态成员变量
静态成员变量在全局数据区分配空间
静态成员变量的生命期为程序运行期
类的静态成员函数
1.未完成的需求
统计在程序运行期间某个类的对象数目
保证程序的安全性(不能使用全局变量)
随时可以获取当前对象的数目(Failure)
实验1 解决方案的尝试
#include
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
运行结果
count = 0
count = 1000
2.问题分析
我们需要什么?
不依赖对象就可以访问静态成员变量
必须保证静态成员变量的安全性
方便快捷的获取静态成员变量的值
3.静态成员函数
在C++中可以定义静态成员函数
静态成员函数是类中特殊的成员函数
静态成员函数属于整个类所有
可以通过类名直接访问公有静态成员函数
可以通过对象名访问公有静态成员函数
静态成员函数的定义
直接通过static关键字修饰成员函数
实验2 静态成员函数
静态成员函数VS普通成员函数
#include
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
运行结果
StaticFunc: main Begin…
d.i = 10
StaticFunc: main End…
实验3 最后的解决方案
#include
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
运行结果
count = 2
count = 2
count = 3
count = 2
小结
静态成员函数是类中特殊的成员函数
静态成员函数没有隐藏的this参数
静态成员函数可以通过类名直接访问
静态成员函数只能直接访问静态成员变量(函数)
C++
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。