国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C++ > 正文

c++類的static成員介紹

2019-11-06 06:58:35
字體:
來源:轉載
供稿:網友

    最近進入了新一輪的迭代開發,每天基本上都在趕項目,而且還強制加班到8點,搞的自己學習的時間都沒有了,而且把自己的學習計劃都打亂了?,F在基本上每天晚上回來看一個小時左右的視頻教學就到十一二點,筆記也是一團亂麻,已經好久沒有更新過了,先把今天學習的內容筆記一下,等這次迭代開發結束后,在整理整理以前的筆記。

static成員

對于特定類型的全體對象而言,有時候可能需要訪問一個全局變量。比如統計某種類型對象已創建的數量。如果使用全局變量會破壞數據的封裝,一般的用戶代碼都可以修改這個全局變量,這是我們可以使用類的靜態成員來解決這個問題,。非static數據成員存在于類類型的每個對象中,static數據成員獨立該類的任意對象存在,它是與類關聯的對象,不與類對象共享。

優點:

static成員的名字在類的作用域中,因此可以避免與其他類成員或全局對象名字沖突可以實施封裝,static成員可以是私有的,而全局對象不可以。閱讀程序容易看出static成員與某個類相關聯,這種可見性可以清晰的反應程序員的意圖。

static成員的定義

static成員需要在類定義體外進行初始化與定義特殊的整形static const成員整形的static const成員可以在類定義體內進行初始化,在任然需要在類定義體外進行定義(錯誤,也可以不進行定義性聲明,前提是static cast被初始化)。countedobject.h#PRagma onceclass CountedObject{public:  CountedObject(void); ~CountedObject(void); static int GetCount();private: static int count_; //靜態成員的引用性聲明,還需有定義性聲明};countedobject.cpp#include "CountedObject.h"int CountedObject::count_ = 0; //靜態成員的定義性聲明CountedObject::CountedObject(void){ count_++;}CountedObject::~CountedObject(void){ count_--;}int CountedObject::GetCount(){ return count_;}01cpp:#include "CountedObject.h"#include <iostream>using namespace std;int main(void){ //cout <<CountedObject::count_<<endl; cout<<CountedObject::GetCount()<<endl; CountedObject co1; //cout <<CountedObject::count_<<endl; cout<<CountedObject::GetCount()<<endl; CountedObject *co2 = new CountedObject; //cout <<CountedObject::count_<<endl; cout<<CountedObject::GetCount()<<endl; delete co2; //cout <<CountedObject::count_<<endl; cout<<CountedObject::GetCount()<<endl; return 0;}02cpp:#include <iostream>using namespace std;class Test{public: Test() { } ~Test() { } static const int x_;//static const引用性聲明};const int Test::x_=100;int main(void){ cout<<Test::x_<<endl; return 0;}static成員函數static成員函數沒有this指針非靜態成員函數可以訪問靜態成員靜態成員函數不可以訪問非靜態成員03cpp:#include <iostream>using namespace std;class Test{public: Test(int y):y_(y) { } ~Test() { } void TestFun() {  cout << x_ << endl;//OK,非靜態成員函數可以訪問靜態成員  TestStaticFun(); } static void TestStaticFun() {  //cout << y_ << endl;//error,靜態成員函數不能訪問非靜態成員  //TestFunc();//error,靜態成員函數不能調用非靜態成員函數 } static const int x_=100;//static const引用性聲明 int y_;};//const int Test::x_=100;int main(void){ cout<<Test::x_<<endl; Test t(12); t.TestFun(); return 0;}

類對象大小的計算

類大小計算遵循結構體對齊原則類大小與數據成員有關與成員函數無關類大小與靜態數據無關虛函數對類的大小的影響(后續)虛繼承對類的大小的影響(后續)
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 青冈县| 宁化县| 东源县| 维西| 贵溪市| 红河县| 常山县| 兰州市| 南木林县| 河间市| 稷山县| 江北区| 瓮安县| 安图县| 大埔区| 新绛县| 广饶县| 四川省| 永州市| 普安县| 汉阴县| 平遥县| 绿春县| 会昌县| 嘉荫县| 石棉县| 章丘市| 出国| 阳东县| 定结县| 无为县| 福贡县| 封丘县| 搜索| 库车县| 西青区| 广宁县| 微山县| 皋兰县| 兴安盟| 五指山市|