2011-05-29 70 views
1

我對C++非常陌生,我遇到了一些代碼,我遇到了麻煩,希望有人能夠啓發我。這是我所瞭解的單身人士課程,它用於保存應用程序的設置。該類有一個私有構造函數和一個私有的Load()方法。它也實例化自己作爲一個私人成員,這一切似乎都沒問題。類的私人Load()方法,它們是如何工作的

private: 
MySettings(void); 
MySettings(const MySettings&); 
static MySettings& GetInstance(); 

bool Load(); 

private:   
    static MySettings mySettings; 

類的Load()方法內的代碼似乎正在執行,但我不明白爲什麼。我不是(不能?)在我的應用程序的任何地方調用它。方法名稱是否具有任何特殊意義的「負載」?我還沒有看到任何討論類的特殊「加載」方法的C++指南。

如果有人能在正確的方向點座標我的感激,感謝

+0

@S警:你的​​類的帖子的定義,我們可以看到誰調用'的load()'完全吻合。 – 2011-05-29 04:44:19

+0

這是一個單身人士。 – 2011-05-29 14:42:23

回答

0

具有特殊意義的是main功能,當您啓動程序,它就會自動調用的唯一方法。然而,負載沒有特別的意義。其目的是爲了避免在構造對象時加載數據,以防萬一它在任何地方傳遞(並且所有副本最終會反覆加載數據)。

總之,沒有。它沒有特別的意義。您必須將其稱爲某處。由於它是私人的,你應該檢查你的構造函數。這可能是調用Load。

+0

是的,其實我在構造函數中發現它,現在看起來很明顯...... – 2011-05-29 05:28:26

0

對於名爲Load的方法沒有什麼特別之處。如果你認爲它已經被執行了,它會被明確地調用。要麼它從你的班級的另一種方法中調用,要麼這個班級讓另一個班級或方法成爲朋友,而另一個實體發起呼叫。

0

的關鍵是這樣的:

private: 
    static MySettings mySettings; 

這宣告MySettings的靜態實例。靜態實例在main()運行之前構造。 (。因此,構造函數被調用,然後)

某處在一個.cc文件,你會發現這樣的事情:

MySettings MySettings:mySettings; 

...這是與聲明去定義。

實際上,這是創建單身人士的一種有點聰明的方式。

(更新:我猜的構造函數調用加載()。)