下面是C++類的靜態(tài)成員筆記,。 靜態(tài)數(shù)據(jù)成員特征用關(guān)鍵字static聲明 為該類的所有對象共享,靜態(tài)數(shù)據(jù)成員具有靜態(tài)生存期 必須在類外定義和初始化,,用(::)來指明所屬的類 舉例說明-具有靜態(tài)數(shù)據(jù)成員的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) //構(gòu)造函數(shù) 9 { 10 count++; 11 } 12 13 Point(Point &p) //復(fù)制構(gòu)造函數(shù) 14 { 15 x = p.x; 16 y = p.y; 17 count++; 18 } 19 20 ~Point() //析構(gòu)函數(shù),在main函數(shù)return返回前調(diào)用 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: //私有數(shù)據(jù)成員 41 int x,y; 42 static int count; //靜態(tài)數(shù)據(jù)成員 43 }; 44 45 int Point::count = 0; //靜態(tài)數(shù)據(jù)成員定義和初始化,,使用類名限定 46 47 int main(void) 48 { 49 Point a(4,5); 50 cout << "Point A: " << a.getX() << "," << a.getY(); 51 a.showCount(); //輸出對象個數(shù) 52 53 Point b(a); //復(fù)制構(gòu)造函數(shù)調(diào)用,定義對象b,,其構(gòu)造函數(shù)會使得count++ 54 cout << "Point B:" << b.getX() << "," << b.getY(); 55 b.showCount(); 56 57 58 return 0; 59 } 運(yùn)行結(jié)果: 1 Point A: 4,5Object count = 1 2 Point B:4,5Object count = 2 靜態(tài)函數(shù)成員特征類外代碼可以使用類名和作用域操作符來調(diào)用靜態(tài)成員函數(shù) 靜態(tài)成員函數(shù)主要用于處理該類的靜態(tài)數(shù)據(jù)成員,,可以直接調(diào)用靜態(tài)成員函數(shù) 如果訪問非靜態(tài)成員,要通過對象來訪問 舉例說明-具有靜態(tài)數(shù)據(jù)/函數(shù)成員的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) //構(gòu)造函數(shù) 9 { 10 count++; 11 } 12 13 Point(Point &p) //復(fù)制構(gòu)造函數(shù) 14 { 15 x = p.x; 16 y = p.y; 17 count++; 18 } 19 20 ~Point() //析構(gòu)函數(shù),,在main函數(shù)return返回前調(diào)用 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() //靜態(tài)函數(shù)成員 36 { 37 cout << "Object count = " << count << endl; 38 } 39 40 private: //私有數(shù)據(jù)成員 41 int x,y; 42 static int count; //靜態(tài)數(shù)據(jù)成員 43 }; 44 45 int Point::count = 0; //靜態(tài)數(shù)據(jù)成員定義和初始化,使用類名限定 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(); //也可以輸出對象個數(shù) 56 57 Point b(a); //復(fù)制構(gòu)造函數(shù)調(diào)用,,定義對象b,其構(gòu)造函數(shù)會使得count++ 58 cout << "Point B:" << b.getX() << "," << b.getY(); 59 60 Point::showCount(); 61 //b.showCount();//也可以輸出對象個數(shù) 62 63 64 return 0; 65 } 運(yùn)行結(jié)果: 1 Object count = 0 2 Point A: 4,5Object count = 1 3 Point B:4,5Object count = 2
|
|