如果我使用的是單件模式(是的,我知道 - 他們通常是不好的)......我有一個實例函數,像這樣:什麼存儲類是一個函數內部的靜態,爲什麼?
MySingleton* Instance() {
static MySingleton instance;
return &instance;
}
哪些存儲類是instance
?
我在讀「程序由David R. Butenhof POSIX線程」,和我遇到的文本說出來:
大多數時候,你會使用extern或static聲明可能條件變量存儲類在文件範圍內,即在任何函數之外。如果它們被其他文件使用,它們應該具有普通(extern)存儲類;如果僅在聲明該變量的文件中使用它們,它們應該具有靜態存儲類。
由於這個靜態函數是一個函數,它是自動的嗎?或者是因爲靜態關鍵字而不同的類?
如果我將「實例」變量移動到其文件中的靜態和全局(不在任何函數中) - 我仍然可以將其引用到另一個文件,或者不起作用嗎?
感謝您的答案 - 您擊中了發現讓我困惑的東西:)你知道一個很好的資源來學習這些東西嗎?在我的任何一本C++書籍中,我都沒有遇到過(以任何重要的方式) - 只是一些奇怪的參考資料,這些參考資料並不足以從中學習。 – 2012-01-10 14:43:04
@ w00te:標準。閱讀「存儲時間」,「連接」和「存儲類別說明符」的完整章節。然後重新閱讀關於鏈接的部分,因爲雖然鏈接本身非常簡單,但是具有不同存儲類別說明符的多個聲明的規則混淆了我。於是最後,它可能是值得一讀的東西實現特定如何DLL導入/導出是由編譯器來處理,因爲雖然它是不一樣的聯動是非常密切的關係。 – 2012-01-10 14:46:47
謝謝,我會添加到我的閱讀列表 - 雖然它聽起來像它可能把我胎位:) – 2012-01-10 17:48:29