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 }