程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> 淺析C++靜態成員函數操作

淺析C++靜態成員函數操作

編輯:C++入門知識

成員函數的實現中不能直接引用類中說明的非靜態成員,可以引用類中說明的靜態成員,如果C++靜態成員函數中要引用非靜態成員時,可通過對象來引用。下面通過例子來說明這一點。

  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://調用時不用對象名  
  23. M::f1(Q);  

讀者可以自行分析其結果。從中可看出,調用靜態成員函數使用如下格式:

  1. <類名>::<靜態成員函數>(<參數表>); 

一個類的靜態成員函數不能像非靜態成員函數那樣“默認調用”它的非靜態成員函數(因為靜態成員函數沒有隱含的this參數)。在一個類的靜態成員函數中,只要通過某種方式得到了一個指向本類型的對象的指針。

並且有合適的access   level,   就可以對此對象調用其非C++靜態成員函數
1.用來保存對象的個數。  

  • 漫談C++編譯的9個階段
  • C++中的C++代碼真的這麼復雜嗎
  • Visual C++ 6.0開發工具介紹
  • 如何學好C++庫類?
  • C++函數調用方式解析

2.作為一個標記,標記一些動作是否發生,比如:文件的打開狀態,打印機的使用狀態,等等。  
3.存儲鏈表的第一個或者最後一個成員的內存地址。  

靜態成員函數的作用基本上相當於一個帶有命名空間的全局函數
1、你不需要生成一個對象的實例就可以直接使用該函數。如,Cxxx::MyStaticFunc();
2、窗口回調函數需使用靜態成員函數或全局函數
3、線程調用需使用C++靜態成員函數或全局函數

使用靜態數據成員可以節省內存,因為它是所有對象所公有的,因此,對多個對象來說,靜態數據成員只存儲一處,供所有對象共用。靜態數據成員的值對每個對象都是一樣,但它的值是可以更新的。只要對靜態數據成員的值更新一次,保證所有對象存取更新後的相同的值,這樣可以提高時間效率。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved