關於C 中靜態的一點疑問

2021-09-19 04:30:03 字數 1195 閱讀 1349

最近在學到c++來了,祝賀自己,但是也遇到兩個疑問:

靜態指標

類的靜態成員以及靜態函式,當看到定義乙個靜態指標的時候,

不知道我的邏輯思路 突發想到用定義乙個靜態

物件來代替。。。。。接下來 就是一段摸不著的邊際的苦苦思考和頭腦中建模。。。。

也查了很多資料,沒有相關說明,可能是我太愛鑽牛角了,但是我就是不能說服我那個可怕的思維邏輯,說服

不了「他」,我是不會罷休的。。。

今天,我有了些想法,記下來:計算機底層如果要實現定義乙個靜態類的物件,就要把其每個成員和函式以及類中類

都定義成靜態,

這樣顯然很繁瑣而且很難統一實現,所以c++前輩們就用靜態指標來實現,物件還是普通物件,只是開啟這個普通物件的方式有些特別(就是這個靜態指標),輕鬆快捷,不影響整個程式系統的進行,就如同要把一篇**儲存到另乙個地方,我們只需要把其路徑更改一下就ok,而不需要逐個逐個去給文章中每一段來修改其存放位址一樣。指標是乙個多麼偉大的東西啊!

於是我就想物件導向程式設計難道不就是指標思想麼。

靜態 私有成員

靜態私有成員初始化在類外全域性:

typename ::靜態成員=《值》

《資料型別》《類名》::《靜態資料成員名》=《值》

靜態成員初始化與一般資料成員初始化不同

應用靜態資料成員時,採用如下格式

《類名》::《靜態成員名》

如果建立了物件,也可以用物件來訪問:

《物件名.靜態成員名》 或 《物件指->靜態成員名》

那麼我的疑問是,

為什麼類的普通私有成員只能在類裡面定義或者通過public的函式來初始化呢?為什麼靜態私有成員也是私有,但能在類外直接呼叫初始化呢?還有普通私有成員函式也能夠在類外直接呼叫。

目前我的關於程式設計的知識體系還很薄弱,所以我說服自己的想法是:普通類私有成員和public成員是「朋友」,所以類中可以直接定義和初始化私有成員,而靜態類私有成員和類外全域性變數是「朋友」,所以類外的全域性中可以初始化和定義類中靜態私有成員或者類中私有函式。(類的函式成員和全域性變數也是「朋友」?),這種分析或許有點傻,但我覺得這些可能就是c++語言本身創作者的思維方式。。。還請高人指點啊!不勝感激

(後記補充:靜態成員類外的全域性定義,是為了實現完善類的封裝,比如別人用這個類物件的時候,可以設定這個靜態成員)

2019-4-18後記補充:又學習了一天,有所收穫,類中函式成員其實是存放在**區,而不是在類的空間中。呼叫用函式this指標。)

C 中的一點疑問

雖然到如今自己已經學習 c 已經將近半年了,在這學習的半年中,也深刻地體會到了 c 語言的簡單與易用性。雖然也曾經用它開發了一點點不是很像樣的東西。但是始終對其中的一些問題感到有點困惑。先記錄如下,希望在以後的學習與使用中,能夠真正理解其中的內涵。首先,我想談的是 中的屬性機制,雖然這個東西自己在寫...

關於bitset的一點疑問

文件中,基本都是如此定義了bitset的乙個ctor bitset const basic string str,typename basic string size type pos 0,typename basic string size type count basic string npos...

關於C 中靜態的一點認識

1.靜態直觀的特點 靜態成員最顯著的乙個特點就是它的作用域是全域性的。只要在呼叫處引入了對應的命名空間,那麼我們可以在 任何地方都可以直接使用。凡是具有全域性特徵的東西我們就可以考慮使用靜態。在實際的開發中,靜態字段我們常用實現資料的共享,修飾為靜態的方法當做常用的工具方法來使用。2.命名上的思考 ...