3 回答

TA貢獻(xiàn)1839條經(jīng)驗(yàn) 獲得超15個(gè)贊
這是一種語(yǔ)言規(guī)則,稱為“ 一個(gè)定義規(guī)則”。在程序中,每個(gè)靜態(tài)對(duì)象(如果已使用)必須定義一次,并且只能定義一次。
類定義通常放在頭文件中,頭文件包含在多個(gè)翻譯單元中(即來(lái)自多個(gè)源文件)。如果靜態(tài)對(duì)象在標(biāo)頭中的聲明是一個(gè)定義,那么您將得到多個(gè)定義,每個(gè)包含標(biāo)頭的單元中的定義都會(huì)違反規(guī)則。因此,它不是一個(gè)定義,您必須在其他位置提供一個(gè)定義。
原則上,該語(yǔ)言可以執(zhí)行內(nèi)聯(lián)函數(shù),將多個(gè)定義合并為一個(gè)定義。但事實(shí)并非如此,因此我們堅(jiān)持使用此規(guī)則。

TA貢獻(xiàn)1831條經(jīng)驗(yàn) 獲得超10個(gè)贊
從C ++ 17開(kāi)始,您現(xiàn)在可以在類內(nèi)定義靜態(tài)數(shù)據(jù)成員。參見(jiàn)cppreference:
可以將靜態(tài)數(shù)據(jù)成員聲明為內(nèi)聯(lián)。內(nèi)聯(lián)靜態(tài)數(shù)據(jù)成員可以在類定義中定義,并且可以指定初始化程序。它不需要類外定義:
struct X {
inline static int n = 1;
};
- 3 回答
- 0 關(guān)注
- 913 瀏覽
添加回答
舉報(bào)