有關C++中靜態成員函數的一些有趣事實

有關C++中靜態成員函數的一些有趣事實

1)靜態成員函數沒有this指針。

例如,以下程序在編譯時失敗,並顯示錯誤“`this'不適用於靜態成員函數”

<code>#include 
class Test {       
   static Test * fun() { 
     return this; // compiler error 
   } 
}; 
   
int main() 
{ 
   getchar(); 
   return 0; 
} /<code>

2)靜態成員函數不能是虛擬的。

3)如果具有相同名稱和名稱參數類型列表的成員函數聲明中的任何一個是靜態成員函數聲明,則不能重載它們。

例如,以下程序在編譯時失敗,錯誤為“void Test::fun()’ and `static void Test::fun()’ cannot be overloaded”

<code>#include 
class Test { 
   static void fun() {} 
   void fun() {} // compiler error 
}; 
   
int main() 
{ 
   getchar(); 
   return 0; 
} /<code>

4)不能將靜態成員函數聲明為const,volatile或const volatile。

例如,以下程序在編譯時失敗,錯誤為“static member function static void Test::fun()’ cannot haveconst’ method qualifier”

<code>#include 
class Test {       
   static void fun() const { // compiler error 
     return; 
   } 
}; 
   
int main() 
{ 
   getchar(); 
   return 0; 
} /<code>


分享到:


相關文章: