靜態成員變數的乙個測試

2021-06-05 01:25:00 字數 788 閱讀 5310

//該類用來測試靜態成員變數是否占有了類的空間

class teststatic

; ~teststatic(){};

static int getvalue()

static void setvalue(int nvalue)

private:

static int m_ntestvalue;

static int m_ntestsize;

};int teststatic::m_ntestvalue = 0;

int teststatic::m_ntestsize = 0;

//該結構的用來測試在結構體裡面使用的類的靜態成員變數

//和在結構體外面的是否是乙個

struct teststaticcls ;/*

總結: 靜態成員變數並不占用類空間的大小,如teststatic類的在vs2003下使用sizeof結果是1,

teststaticcls使用sizeof結果是8(tsc實際為1,記憶體對齊占用3個位元組).在這裡其實類的

作用就相當於靜態成員變數的命名空間一樣的功能,限制了改全域性變數只能通過該類

來訪問。放在結構體中也是同樣的原理。

*/

teststatic test1;//第乙個物件

test1.setvalue(4);//賦值

teststatic test2;//第二個物件未賦值

cout<

結果:如下圖

乙個類成員函式的區域性靜態變數問題

原文 當時遇到的需求需要這樣處理 呼叫某個類物件的某個成員函式時,第一次有具體意義的,其他時候都是保持不變的 無意義的。這個需求可以看做是在呼叫某成員函式時,第一次進行初始化,其他時候不進行操作,即在首次呼叫時進行初始化,根據這點,很容易想到c c 裡面的static變數,它的作用是保持變數內容的持...

類裡面定義乙個指向自己的靜態成員指標變數

class a public static a my 解釋 在類裡面定義自己的乙個靜態變數,當這個類的所有物件都需要與某個同類的物件發生關係 不要想歪了 時,就這麼用。這個靜態成員一般是全域性存在的 廢話 而且有特殊地位的物件。有乙個很形象的例子與此類似 好比有乙個部落,對部落裡的人,可以用 cla...

類中的靜態成員變數 靜態成員函式

類中的靜態成員變數 靜態成員函式?1 類中的靜態成員變數 靜態成員變數屬於整個類,不屬於某個特定的物件,因此無論建立了多少個物件,所有物件都共享類中的靜態成員變數。靜態成員變數必須在類內宣告,類外初始化。2 類中的靜態成員函式 靜態成員函式也是屬於類本身,而不屬於某個特定的物件。靜態成員函式與普通成...