我想知道當存在非靜態成員函數時是否有任何優勢使用靜態成員函數。它會導致更快的執行(因爲不必關心所有的成員變量),或者更少的內存使用(因爲沒有被包含在所有實例中)?使用靜態成員函數而不是等效的非靜態成員函數的優點?
基本上,我正在看的函數是一個效用函數,用於將表示像素顏色的整數數組圍繞任意中心點旋轉任意數量。它被放置在我的抽象Bullet基類中,因爲只有子彈纔會使用它,而且我不想在某些實用程序類中調用它的開銷。它有點太長,並且在每個派生的子彈類中都會使用,所以內聯可能不是個好主意。你會如何建議我定義這個功能?作爲Bullet的靜態成員函數,Bullet的非靜態成員函數,或者不是Bullet的成員,而是在Bullet.h中類的外部定義的成員?每個的優點和缺點是什麼?
是的,我不太確定C++是如何工作的。我來自Flash背景,ActionScript在最奇怪的地方有可怕的開銷 - 實用程序類中的靜態函數在運行時解析,所以每次使用Math.sin時,都必須通過哈希表找到Math類,然後找到sin函數。很高興聽到C++至少有更多的常識.. – jonathanasdf 2010-05-01 05:24:17
@Zan:靜態成員函數沒有'this'指針。 – 2010-05-01 05:37:33
確實,你是對的。我讀到我回應的這句話:「成員函數和免費函數之間絕對沒有性能差異」。這實際上並不是它所說的。我的錯。 – 2010-05-02 01:53:24