2017-09-15 125 views
-1

靜態數據成員和類的靜態函數成員是否存儲在同一個地方(靜態存儲區域,而不是堆或堆棧)作爲函數和全局變量中的靜態變量?靜態數據成員和類的靜態函數成員與函數和全局變量中的靜態變量存儲在同一位置嗎?

+1

你能詳細說明你的困惑嗎? 'static'成員變量不會被存儲在'.text'節中,除非它們是'const'。代碼總是存儲在'.code'部分。 – user0042

+1

就「存儲」而言,靜態和非靜態成員函數之間確實沒有區別。或非成員函數(靜態或非靜態)或名稱空間函數。除非內聯並且不使用ODR,否則他們通常將*全部*存儲在相同的內存段和可執行文件中。 –

+0

@ user0042哪裏有不是「const」存儲的類的靜態成員變量?一個類的靜態函數成員存儲在哪裏? – Ben

回答

0


號當C++代碼被轉換成彙編語言會有一個.data部,其保持所有靜態數據(即具有在編譯時間的值的所有變量)和.code部,其保存所有代碼(我想說功能,但沒有功能)。

+1

你說*否*,但你說*保存所有靜態數據*這將表明答案是「是的,他們存儲在同一個地方」。這是什麼? – NathanOliver

+0

問題是「數據成員和靜態函數」。數據成員存儲在一個地方,功能(或說明)存儲在另一個地方。 – xyious

+1

其實這個答案很混亂。 – skypjack