C++ 類中的static 成員函數


簡介
同靜態成員變量一樣,靜態成員函數在類里面定義,作用域為整個類,所有類的對象共享靜態成員函數

特征

由於沒有傳遞this 指針,靜態成員函數只能訪問static 成員 不能訪問非static 成員

用法

 1 class ex{
 2     private:
 3         int _non_static;
 4         static int _static;
 5     public:
 6         int h(){
 7             return _non_static;
 8         }
 9         static int g(){
10             //_non_static=0; (不正確) 
11             //靜態成員函數不能訪問非靜態成員變量 
12             return _static;
13          }
14         static int f(){
15             //h();        (不正確) 
16             //靜態成員函數不能訪問非靜態成員函數 
17             return g();
18         }
19 };
20 int ex::_static= 0;//static 成員變量可以在類外改變 
21 int main(){
22     ex var;
23     ex* pointer=&var;
24     var.f();//方式一:點運算符 
25     pointer->f();//方式二:箭頭運算符 
26     ex::f();//方式三: 類名:靜態成員函數名 
27     return 0;
28 }

這里要注意:static函數在類內聲明、類外定義時,類內要寫明static 類外則不能加static關鍵字,如下,會報錯

 1 class ex{
 2     public:
 3         static int f();
 4 };
 5 /*錯誤的示范 
 6 static int ex::f(){
 7     return 0;
 8 }
 9 */
10 //應該這樣寫 
11 int ex::f(){
12     return 0;
13 }
14 int main(){
15     return 0;
16 }

因為在類體外聲明static 會將成員函數作用域擴大到文件,比類的域要大,所以會報錯

[Error] cannot declare member function ... to have static linkage


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM