新聞中心
靜態(tài)數(shù)據(jù)成員的值對每個對象都是一樣,這些對于一些專業(yè)的程序員來說進行靜態(tài)成員函數(shù)實現(xiàn)是一件非常頭疼的事情,看完本文一定會讓您解決是你頭疼的靜態(tài)成員函數(shù)的問題了!

建網(wǎng)站原本是網(wǎng)站策劃師、網(wǎng)絡(luò)程序員、網(wǎng)頁設(shè)計師等,應(yīng)用各種網(wǎng)絡(luò)程序開發(fā)技術(shù)和網(wǎng)頁設(shè)計技術(shù)配合操作的協(xié)同工作。創(chuàng)新互聯(lián)專業(yè)提供成都網(wǎng)站設(shè)計、網(wǎng)站制作,網(wǎng)頁設(shè)計,網(wǎng)站制作(企業(yè)站、成都響應(yīng)式網(wǎng)站建設(shè)公司、電商門戶網(wǎng)站)等服務(wù),從網(wǎng)站深度策劃、搜索引擎友好度優(yōu)化到用戶體驗的提升,我們力求做到極致!
在靜態(tài)成員函數(shù)的實現(xiàn)中不能直接引用類中說明的非靜態(tài)成員,可以引用類中說明的靜態(tài)成員。如果靜態(tài)成員函數(shù)中要引用非靜態(tài)成員時,可通過對象來引用。下面通過例子來說明這一點。
- #include
- class M
- {
- public:
- M(int a) { A=a; B+=a;}
- static void f1(M m);
- private:
- int A;
- static int B;
- };
- void M::f1(M m)
- {
- cout<<"A="<<
- cout<<"B="<<
- }
- int M::B=0;
- void main()
- {
- M P(5),Q(10);
- M::f1(P); file://調(diào)用時不用對象名
- M::f1(Q);
- }
讀者可以自行分析其結(jié)果。從中可看出,調(diào)用靜態(tài)成員函數(shù)使用如下格式:一個類的靜態(tài)成員函數(shù)不能像非靜態(tài)成員函數(shù)那樣“默認調(diào)用”它的非靜態(tài)成員函數(shù)(因為靜態(tài)成員函數(shù)沒有隱含的this參數(shù))。
在一個類的靜態(tài)成員函數(shù)中,只要通過某種方式得到了一個指向本類型的對象的指針,并且有合適的access level, 就可以對此對象調(diào)用其非靜態(tài)成員函數(shù)。
1.用來保存對象的個數(shù)。
2.作為一個標記,標記一些動作是否發(fā)生,比如:文件的打開狀態(tài),打印機的使用狀態(tài),等等。
3.存儲鏈表的***個或者***一個成員的內(nèi)存地址。
靜態(tài)成員函數(shù)的作用基本上相當于一個帶有命名空間的全局函數(shù)。
1、你不需要生成一個對象的實例就可以直接使用該函數(shù)。如,Cxxx::MyStaticFunc();
2、窗口回調(diào)函數(shù)需使用靜態(tài)成員函數(shù)或全局函數(shù)。
3、線程調(diào)用需使用靜態(tài)成員函數(shù)或全局函數(shù)。
C++是在C語言大行其道的歷史背景下發(fā)展起來的,在一開始以及后來的相當長一段時間內(nèi),C++是C的超集,所有C的特性在C++里面都有,因此導(dǎo)致了大量后來的C++入門書籍都從C講起,實際上,這是一個誤導(dǎo),因為C++雖然是C的超集,然而用抽象機制擴展C語言的重大意義就在于用抽象去覆蓋C當中裸露的種種語言特性,讓程序員能夠在一個更自然的抽象層面上編程。
比如你不是用int*加一個數(shù)組大小n來表示一個數(shù)組,而是用可自動增長的vector;比如你不是用malloc/free,而是用智能指針和RAII技術(shù)來管理資源;比如你不是用一個只包含數(shù)據(jù)的結(jié)構(gòu)體加上一組函數(shù)來做一個暴露的類,而是使用真正的ADT。
比如你不是使用second-class的返回值來表達錯誤,而是利用first-class的語言級異常機制等等。然而,C畢竟是C++的源頭,剝開C++的抽象外衣,底層仍然還是C;而且,更關(guān)鍵的是,在實際編碼當中,有時候還的確要“C++”一把,比如在模塊級的二進制接口封裝上。Bjarne也說過,OO/GP這些抽象機制只有用在合適的地方才是合適的。
名稱欄目:漫談C++類的靜態(tài)成員
轉(zhuǎn)載來源:http://m.fisionsoft.com.cn/article/djcgcsp.html


咨詢
建站咨詢
