2010-07-05 82 views
1

我剛遇到了具有protected靜態類函數的代碼,如:訪問修飾符是否適用於靜態類函數?

class C { 
... 

    protected: 
     static int fun() { ... } 
}; 

我很好奇靜態類函數是否可以有訪問修飾符,這意味着什麼?因爲它們是類全局而不是前置實例。

謝謝,Boda Cydo。

回答

1

C++中的訪問修飾符不起作用每個實例。他們總是工作每班。這就是它一直如此。這使得它們適用於靜態成員也非常合乎邏輯。

這是一個相當普遍的誤解,即C++中的訪問保護以某種方式應該按每個實例工作,這似乎也激發了您的問題。

+0

謝謝你解釋這個。相信與否,我認爲他們是'per-instance'!我學習過程中的一個非常嚴重的錯誤。現在我知道他們是'每班'。 – bodacydo 2010-07-05 02:14:43

0

它仍然具有相同的目的:只有派生類可以調用該靜態函數。

+0

哦?無論如何,我認爲靜態類函數總是可訪問的。 – bodacydo 2010-07-05 02:06:17

+0

靜態只意味着它們可以在沒有可用對象實例的情況下訪問。它們具有全球範圍的有效性,但仍然遵守訪問限制。 – Cogwheel 2010-07-05 05:05:11

0

它表示受保護:可以從該類的其他成員函數或派生類的成員函數中訪問靜態函數。