日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢(xún)
選擇下列產(chǎn)品馬上在線(xiàn)溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷(xiāo)解決方案
漫談C++類(lèi)的靜態(tài)成員

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

建網(wǎng)站原本是網(wǎng)站策劃師、網(wǎng)絡(luò)程序員、網(wǎng)頁(yè)設(shè)計(jì)師等,應(yīng)用各種網(wǎng)絡(luò)程序開(kāi)發(fā)技術(shù)和網(wǎng)頁(yè)設(shè)計(jì)技術(shù)配合操作的協(xié)同工作。創(chuàng)新互聯(lián)專(zhuān)業(yè)提供成都網(wǎng)站設(shè)計(jì)、網(wǎng)站制作,網(wǎng)頁(yè)設(shè)計(jì),網(wǎng)站制作(企業(yè)站、成都響應(yīng)式網(wǎng)站建設(shè)公司、電商門(mén)戶(hù)網(wǎng)站)等服務(wù),從網(wǎng)站深度策劃、搜索引擎友好度優(yōu)化到用戶(hù)體驗(yàn)的提升,我們力求做到極致!

靜態(tài)成員函數(shù)的實(shí)現(xiàn)中不能直接引用類(lèi)中說(shuō)明的非靜態(tài)成員,可以引用類(lèi)中說(shuō)明的靜態(tài)成員。如果靜態(tài)成員函數(shù)中要引用非靜態(tài)成員時(shí),可通過(guò)對(duì)象來(lái)引用。下面通過(guò)例子來(lái)說(shuō)明這一點(diǎn)。

 
 
 
  1. #include   
  2. class M  
  3. {  
  4. public:  
  5. M(int a) { A=a; B+=a;}  
  6. static void f1(M m);  
  7. private:  
  8. int A;  
  9. static int B;  
  10. };  
  11.  
  12. void M::f1(M m)  
  13. {  
  14. cout<<"A="<< 
  15. cout<<"B="<< 
  16. }  
  17.  
  18. int M::B=0;  
  19. void main()  
  20. {  
  21. M P(5),Q(10);  
  22. M::f1(P); file://調(diào)用時(shí)不用對(duì)象名  
  23. M::f1(Q);  

讀者可以自行分析其結(jié)果。從中可看出,調(diào)用靜態(tài)成員函數(shù)使用如下格式:一個(gè)類(lèi)的靜態(tài)成員函數(shù)不能像非靜態(tài)成員函數(shù)那樣“默認(rèn)調(diào)用”它的非靜態(tài)成員函數(shù)(因?yàn)?font>靜態(tài)成員函數(shù)沒(méi)有隱含的this參數(shù))。

在一個(gè)類(lèi)的靜態(tài)成員函數(shù)中,只要通過(guò)某種方式得到了一個(gè)指向本類(lèi)型的對(duì)象的指針,并且有合適的access   level,   就可以對(duì)此對(duì)象調(diào)用其非靜態(tài)成員函數(shù)。

1.用來(lái)保存對(duì)象的個(gè)數(shù)。  
2.作為一個(gè)標(biāo)記,標(biāo)記一些動(dòng)作是否發(fā)生,比如:文件的打開(kāi)狀態(tài),打印機(jī)的使用狀態(tài),等等。  
3.存儲(chǔ)鏈表的***個(gè)或者***一個(gè)成員的內(nèi)存地址。  

靜態(tài)成員函數(shù)的作用基本上相當(dāng)于一個(gè)帶有命名空間的全局函數(shù)。
1、你不需要生成一個(gè)對(duì)象的實(shí)例就可以直接使用該函數(shù)。如,Cxxx::MyStaticFunc();
2、窗口回調(diào)函數(shù)需使用靜態(tài)成員函數(shù)或全局函數(shù)。
3、線(xiàn)程調(diào)用需使用靜態(tài)成員函數(shù)或全局函數(shù)。

C++是在C語(yǔ)言大行其道的歷史背景下發(fā)展起來(lái)的,在一開(kāi)始以及后來(lái)的相當(dāng)長(zhǎng)一段時(shí)間內(nèi),C++是C的超集,所有C的特性在C++里面都有,因此導(dǎo)致了大量后來(lái)的C++入門(mén)書(shū)籍都從C講起,實(shí)際上,這是一個(gè)誤導(dǎo),因?yàn)镃++雖然是C的超集,然而用抽象機(jī)制擴(kuò)展C語(yǔ)言的重大意義就在于用抽象去覆蓋C當(dāng)中裸露的種種語(yǔ)言特性,讓程序員能夠在一個(gè)更自然的抽象層面上編程。

比如你不是用int*加一個(gè)數(shù)組大小n來(lái)表示一個(gè)數(shù)組,而是用可自動(dòng)增長(zhǎng)的vector;比如你不是用malloc/free,而是用智能指針和RAII技術(shù)來(lái)管理資源;比如你不是用一個(gè)只包含數(shù)據(jù)的結(jié)構(gòu)體加上一組函數(shù)來(lái)做一個(gè)暴露的類(lèi),而是使用真正的ADT。

比如你不是使用second-class的返回值來(lái)表達(dá)錯(cuò)誤,而是利用first-class的語(yǔ)言級(jí)異常機(jī)制等等。然而,C畢竟是C++的源頭,剝開(kāi)C++的抽象外衣,底層仍然還是C;而且,更關(guān)鍵的是,在實(shí)際編碼當(dāng)中,有時(shí)候還的確要“C++”一把,比如在模塊級(jí)的二進(jìn)制接口封裝上。Bjarne也說(shuō)過(guò),OO/GP這些抽象機(jī)制只有用在合適的地方才是合適的。


本文名稱(chēng):漫談C++類(lèi)的靜態(tài)成員
新聞來(lái)源:http://www.dlmjj.cn/article/djcgcsp.html