因為類中寫靜態成員而得到的一點感悟

2021-07-11 09:10:10 字數 727 閱讀 3525

在考試中,由於經常看到乙個靜態變數定義在乙個函式中,然後多次呼叫這個函式通過考察多次呼叫的時候這個變數的值來考察靜態變數,這樣的考察方式先入為主的奠定了自己對於靜態變數的印象。(實際上這僅僅是靜態變數中比較特殊的一類,我們稱為區域性靜態變數)而且自己有的時候有乙個不好的習慣就是將類寫在main函式中。然後自己在寫乙個類的時候就出現了報錯現象。**如下:

#includeusing namespace std;

int main();

int a::num=0;//首先,類中非唯讀的靜態物件只能在類外進行初始化(或者說定義,因為靜態物件不是屬於某乙個單獨的物件的,因此不能寫在建構函式中,因而放在類外進行初始化),而且前面不能加static(這一條是規定)

a a1;

cout<所以,盡量不要將類定義在main函式中。

我們繼續回到類中的靜態成員中,對於類中的靜態資料成員,c++primer有一句話,類中的靜態資料成員定義在任何函式之外,注意是類中的資料成員而不是類中的成員函式,對於類中的成員函式而言,既可以定義在類外,但是定義在類外的時候是不能加static關鍵字的,這是規定。

再看上面的**,我們規定類中的靜態資料成員是作用域全域性的,因此是必須在全域性進行初始化的,而我們不可能僅僅將成員變數丟到全域性,而在函式中定義整個類的,所以對於含有靜態資料成員的類而言,是沒有任何選擇,必須定義在全域性的。

類成員函式指標的一點體悟

類的成員函式分為兩種,一種是靜態函式,另外一種是非靜態函式。例如 classx display 為靜態函式,getvalue即為非靜態函式。兩種函式在使用的時候是不一樣的。靜態函式可以直接由類名來呼叫,而非靜態函式則必須通過某乙個物件來呼叫,例如 x display x x x.getvalue 為...

關於C 中靜態的一點疑問

最近在學到c 來了,祝賀自己,但是也遇到兩個疑問 靜態指標 類的靜態成員以及靜態函式,當看到定義乙個靜態指標的時候,不知道我的邏輯思路 突發想到用定義乙個靜態 物件來代替。接下來 就是一段摸不著的邊際的苦苦思考和頭腦中建模。也查了很多資料,沒有相關說明,可能是我太愛鑽牛角了,但是我就是不能說服我那個...

關於C 中靜態的一點認識

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