C++面向對象學習-類的靜態成員,面向對象靜態
1 靜態數據成員
2 1,sizeof 運算符不會計算靜態成員。
3
4 2,對靜態成員數據初始化的順序為它們在類體外聲明的順序。
5
6 3,靜態數據成員被類的所有對象所共享,包括該類的派生類對象。
7
8 4,靜態成員數據也可以分為公有的、私有的和受保護的靜態成員。
9 對公有靜態成員,即可以通過類的對象進行訪問,也可以通過類名直接訪問。
10 私有的和保護的靜態成員數據則只能被該類的公有成員函數訪問。
11
12 5,在創建任何對象之前,類的靜態成員數據已經存在並可以引用。
13
14 6,靜態數據成員的類型可以是所屬類的類型,非靜態數據成員則不可以。
15 class Student{
16 public:
17 static Student stu1; //靜態數據成員,屬於整個類,內存只有一份
18 Student stu2; //error
19 Student *pstu; //指針
20 Student &rstu; //引用
21 };
22 Student::stu1::stu1::stu1::...::stu1等價於Student::stu1。
23 靜態數據成員是自定義數據類型時的初始化
24 class A{
25 public:
26 A(int);
27 };
28 class B{
29 private:
30 static A a;
31 };
32 A B::a(2);
33
34
35 靜態成員函數
36 1,靜態數據成員和靜態成員函數都屬於整個類,而不是某個具體對象。在程序開始運行時就為靜態成員數據分配存儲空間。
37 所以,對靜態成員函數的引用不需要對象名(需引用類名)。
38 class Student{
39 public:
40 static func();
41 };
42
43 int main(){
44 Student::func(); //here!
45 return 0;
46 }