2014-04-26 35 views
-1

我一直在做一些功能庫和命名空間的試驗。我注意到,你可以在一個命名空間中聲明功能static,雖然它不是一個類聲明中:在課堂外使用「靜態」指令有什麼優勢?

HPP:

ANameSpace 
{ 

    static void aFunc(); 

}; 

CPP:

ANameSpace 
{ 

    static void aFunc() 
    { 
     std::cout<<"Static function called"<<std::endl; 
    } 

}; 

我瞭解static班級成員的概念以及它們如何非常有用,但在班級以外使用static有什麼特別的優勢?

注:我投最後一投,關閉了這個問題(無法刪除,因爲有一個答案),因爲引用的參考文獻作爲DUP,雖然它是範圍更廣,包含了詳細的討論static。但我不確定它是否完全回答了這個問題,因爲我現在已經說過了。

+0

請參閱http://stackoverflow.com/a/22541240/1382251瞭解有關'static'用法的詳細說明。 –

+0

或者參閱[cppreference.com](http://en.cppreference.com/w/cpp/language/storage_duration) –

回答

2

A static全局函數只在文件範圍內可見。這可能是由於C兼容性,這也是可能的。

This總結了靜態相當好的每種可能的用法。