不可否認,之所以這樣做的原因已經消退,因爲C++ 11已經擺脫了那個令人討厭的規則 - 我認爲它聲明瞭靜態const int/char/enum被允許你在標題中進行初始化,但對於所有其他類型你不能。正因爲如此,我想嘗試總結C++的聲明和定義約定。聲明與定義的C++存儲類和限定符規則
會有人能夠採取我嘗試/做下面的事情,並擴大它爲我想念/得到不正確的。我想總結各種static/const/int/non-int變量的聲明和定義的所有「規則」。理想情況下,這可能放在到的某些種類表3列:/數據的類型聲明/ defining-但我不知道該怎麼做就在這裏:
靜態數據成員(聲明)
- 只提供類型和名稱,不要初始化,因爲使用相同標題的多個文件最終會生成多個副本。
靜態數據成員(定義)
- 初始化的源文件中的變量。不必在源文件定義中重複「靜態」一詞。
const的數據成員(聲明)
- 宣告但使用關鍵字常量在頭文件未初始化。
const的數據成員(定義)
- 必須使用在構造函數初始化值列表進行初始化。
靜態和const數據成員(聲明)
- 使用關鍵字靜態和const但未初始化在頭文件中聲明。
靜態和const數據成員(定義)
- 在源文件中定義。不需要使用關鍵字static和const(??)。
NB:我明白預C++ 11 INT /枚舉/曾經有過關於靜態的特殊規則(或者是它的靜態常量?)字符,這是他們可以可以在頭初始化? ?
- 規則全局變量
- 規則易變
- 規則的extern
- 波動是否遵循完全相同的規則「常量」?靜態易失性會遵循靜態數據成員等的約定嗎?
我想你還沒有聽說過C++ 11允許非靜態數據成員在課堂上進行初始化初始化 – Casey
你需要檢查你的源代碼另外,我不是100%確定你理解* declare *和* define *的真正含義 –