2013-04-06 67 views
2

有一些類成員函數f()都是私有的和靜態的有意義嗎? 例如類的成員函數static和private

class MyClass 
{ 
... 
private: 

static int foo(); 
} 

謝謝。

嗨,感謝您的所有意見!好,我知道了。是的,的確,最初我開始在我的課堂上使用靜態函數,因爲它們與我班的對象無關 - 正在做其他一些操作。現在我也意識到他們不需要公開。所以,我想我會像這樣離開他們。 當我刪除靜態關鍵字時,我開始出現一些錯誤(顯然是由於它在整個班級中被使用的方式,所以我現在懶惰修復這些,只會讓它變爲私人並保留靜態:))。

回答

3

好的,有時候。例如,同一類的公共靜態方法使用的效用函數。

3

是的,擁有一個靜態私有成員函數是有道理的。例如,它可能是一個無狀態的效用函數,僅用於同一類別的其他成員。

不,你的班級沒有意義。由於MyClass沒有其他成員,因此沒有實體可以看到您的MyClass::foo

0

絕對!設想一個純靜態的類,如統計函數類。助手函數可能是私有的和靜態的。

0

當然。您可以將其用於您班級的內部目的,即私人功能,例如

class A{ 
    public: 
     static int i_; 
private: 
    void privatef(){hiden_i_++;} 
    static int hiden_i_; 
}; 
+0

爲什麼不在CPP文件的匿名命名空間中聲明/定義函數爲自由函數? – Oodini 2018-02-13 16:38:04