下面是C++類的靜態成員筆記,
靜態資料成員特征
用關鍵字static宣告
為該類的所有物件共享,靜態資料成員具有靜態生存期
必須在類外定義和初始化,用(::)來指明所屬的類
舉例說明-具有靜態資料成員的Point類

代碼示例:
1 #include<iostream> 2 3 using namespace std; 4 5 class Point //Point類定義 6 { 7 public: //外部介面 8 Point(int x = 0, int y = 0):x(x), y(y) //建構式 9 { 10 count++; 11 } 12 13 Point(Point &p) //復制建構式 14 { 15 x = p.x; 16 y = p.y; 17 count++; 18 } 19 20 ~Point() //解構式,在main函式return回傳前呼叫 21 { 22 count--; 23 } 24 25 int getX() 26 { 27 return x; 28 } 29 30 int getY() 31 { 32 return y; 33 } 34 35 void showCount() 36 { 37 cout << "Object count = " << count << endl; 38 } 39 40 private: //私有資料成員 41 int x,y; 42 static int count; //靜態資料成員 43 }; 44 45 int Point::count = 0; //靜態資料成員定義和初始化,使用類名限定 46 47 int main(void) 48 { 49 Point a(4,5); 50 cout << "Point A: " << a.getX() << "," << a.getY(); 51 a.showCount(); //輸出物件個數 52 53 Point b(a); //復制建構式呼叫,定義物件b,其建構式會使得count++ 54 cout << "Point B:" << b.getX() << "," << b.getY(); 55 b.showCount(); 56 57 58 return 0; 59 }
運行結果:
1 Point A: 4,5Object count = 1 2 Point B:4,5Object count = 2
靜態函式成員特征
類外代碼可以使用類名和作用域運算子來呼叫靜態成員函式
靜態成員函式主要用于處理該類的靜態資料成員,可以直接呼叫靜態成員函式
如果訪問非靜態成員,要通過物件來訪問
舉例說明-具有靜態資料/函式成員的Point類

代碼示例:
1 #include<iostream> 2 3 using namespace std; 4 5 class Point //Point類定義 6 { 7 public: //外部介面 8 Point(int x = 0, int y = 0):x(x), y(y) //建構式 9 { 10 count++; 11 } 12 13 Point(Point &p) //復制建構式 14 { 15 x = p.x; 16 y = p.y; 17 count++; 18 } 19 20 ~Point() //解構式,在main函式return回傳前呼叫 21 { 22 count--; 23 } 24 25 int getX() 26 { 27 return x; 28 } 29 30 int getY() 31 { 32 return y; 33 } 34 35 static void showCount() //靜態函式成員 36 { 37 cout << "Object count = " << count << endl; 38 } 39 40 private: //私有資料成員 41 int x,y; 42 static int count; //靜態資料成員 43 }; 44 45 int Point::count = 0; //靜態資料成員定義和初始化,使用類名限定 46 47 int main(void) 48 { 49 Point::showCount(); 50 51 Point a(4,5); 52 cout << "Point A: " << a.getX() << "," << a.getY(); 53 54 Point::showCount(); 55 //a.showCount(); //也可以輸出物件個數 56 57 Point b(a); //復制建構式呼叫,定義物件b,其建構式會使得count++ 58 cout << "Point B:" << b.getX() << "," << b.getY(); 59 60 Point::showCount(); 61 //b.showCount();//也可以輸出物件個數 62 63 64 return 0; 65 }
運行結果:
1 Object count = 0 2 Point A: 4,5Object count = 1 3 Point B:4,5Object count = 2
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/262760.html
標籤:C++
上一篇:微信授權問卷星
下一篇:C++陣列的存盤與初始化
