2013-11-15 132 views
-2

我知道靜態類成員函數不需要實例化。但是,由於類成員函數的操作總是基於其自己的成員變量,爲什麼我們仍然使用靜態成員函數?有人可以通過一些詳細的例子告訴我嗎?提前致謝。由於靜態成員函數不能修改非靜態成員變量,爲什麼還要使用它呢?

P.S.我正在編寫一個程序,在一個類成員函數中創建兩個線程,以便在創建兩個線程時需要傳遞線程回調函數地址。我希望線程回調函數也是同一個類的成員函數。根據一些引用,如果一個回調函數是一個類的成員,它應該是靜態的。出現這樣的問題:在靜態回調中,我無法調用同一個類中的其他非靜態函數,也無法修改它的非靜態成員變量。 (英語是我的輔助語言,所以我不擅長它,希望有人幫我更簡潔地描述一下:-)

+1

你的問題不清楚。一些成員函數的行爲不是基於成員變量的值;這樣的功能可以是「靜態」的。 – Beta

回答

2

我會給你舉個例子。如果要計算你有多少情況下,宣佈你的課,你可能有一個靜態成員像

int instance_count; 

,並在類的構造函數,你可以添加instance_count像:

instance_count++; 

,並在您的析構函數:

instance_count--; 

因此,您可以獲取當前在程序中有多少個實例。

+0

這是一個使用靜態變量的例子;但問題是關於靜態函數。 – karadoc

+0

對不起。謝謝你提醒我。 – yanchong