【C++深度剖析學習總結】 20 類的靜態(tài)成員變量和類的靜態(tài)成員函數
【C++深度剖析學習總結】 20 類的靜態(tài)成員變量和類的靜態(tài)成員函數
類的靜態(tài)成員變量
1.成員變量的回顧
通過對象名能夠訪問public成員變量
每個對象的成員變量都是專屬的
成員變量不能在對象之間共享
2.新的需求
統(tǒng)計在程序運行期間某個類的對象數目
保證程序的安全性(不能使用全局變量)
隨時可以獲取當前對象的數目
實驗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.靜態(tài)成員變量—開始介紹新概念
在C++中可以定義靜態(tài)成員變量
靜態(tài)成員變量屬于整個類所有
靜態(tài)成員變量的生命期不依賴于任何對象
可以通過類名直接訪問公有靜態(tài)成員變量
所有對象共享類的靜態(tài)成員變量
可以通過對象名訪問公有靜態(tài)成員變量
靜態(tài)成員變量的特性
在定義時直接通過static關鍵字修飾
靜態(tài)成員變量需要在類外單獨分配空間
靜態(tài)成員變量在程序內部位于全局數據區(qū)
語法規(guī)則:
Type ClassName::VarName = value;
實驗2 靜態(tài)成員變量的使用
#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關鍵定義靜態(tài)成員變量
靜態(tài)成員變量隸屬于類所有
每一個對象都可以訪問靜態(tài)成員變量
靜態(tài)成員變量在全局數據區(qū)分配空間
靜態(tài)成員變量的生命期為程序運行期
類的靜態(tài)成員函數
1.未完成的需求
統(tǒng)計在程序運行期間某個類的對象數目
保證程序的安全性(不能使用全局變量)
隨時可以獲取當前對象的數目(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.問題分析
我們需要什么?
不依賴對象就可以訪問靜態(tài)成員變量
必須保證靜態(tài)成員變量的安全性
方便快捷的獲取靜態(tài)成員變量的值
3.靜態(tài)成員函數
在C++中可以定義靜態(tài)成員函數
靜態(tài)成員函數是類中特殊的成員函數
靜態(tài)成員函數屬于整個類所有
可以通過類名直接訪問公有靜態(tài)成員函數
可以通過對象名訪問公有靜態(tài)成員函數
靜態(tài)成員函數的定義
直接通過static關鍵字修飾成員函數
實驗2 靜態(tài)成員函數
靜態(tài)成員函數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
小結
靜態(tài)成員函數是類中特殊的成員函數
靜態(tài)成員函數沒有隱藏的this參數
靜態(tài)成員函數可以通過類名直接訪問
靜態(tài)成員函數只能直接訪問靜態(tài)成員變量(函數)
C++
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發(fā)現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。