C 中類裡static成員變數與普通的成員變數有什麼不同?

2025-03-09 22:05:14 字數 2029 閱讀 1589

1樓:網友

類中的static成員,只有乙個實盯虧敗例。也就是所有的類的例項都用同一空敬個變數。

如果這個變數是public的,那類的外部能夠直接訪問,方法是類名:變數名。

class a

public:

static int x;

int y;

a a1, a2; /建立了兩個a的例項。

10; /可以這樣用,也可以 a::x = 10; 或 = 10; 效果完全一樣,都對同乙個變數操作。

12; /這是凱顫普通成員變數, 和 是分屬兩個例項中的。

2樓:大哥的大哥

c++中「類」的static成員,只有乙個例項。也就是所有的類的例項都用同乙個變數。如果這個變數是public的,那類的外部能夠直接訪問,方法是類名「變數名」。

**中的例項變數、類變數、常量都屬虧遲於成員變數,這與變數的修飾符有關係,也就是上面代念念碼中的private、static、final等修飾符。

首先類的靜態成員變數為類的全域性變數,並不為類的物件所擁有。而類的普通成員變數通過類生成物件後是屬於生成物件的變為此物件所特有,不能與其它生成的物件所共有。如下圖所示,兩個物件a,b的成員變數x並不是相同的。

靜態成員變數需要在全域性定義,普通成員變數是屬於某個物件仔空困的,不需進行全域性定義。訪問類的靜態成員變數可以通過如下形式,如類a中定義了靜態成員變數x,形式為類名,變數名,類的靜態成員變數在物件還沒有產生前就已經存在了。

c++中static的幾種含義:static區域性變數,static全域性變數,類中的 static資料成員,類中的static成員函式

3樓:網友

static區域性變數。在區域性變數宣告前加static表示這是乙個「形似區域性變數的靜態變數」。看起來和用起來像是區域性變數,但實際上他的性質跟其他的靜態變數是一樣的,也就是說在記憶體中只有乙個副本,不會像區域性變數那樣函式呼叫完畢就釋放。

與其他靜態變數不同的是他的可見性只保持在宣告它的函式體內,但可以設定訪問函式提供給外部使用。

static全域性變數。這種用法繼承自c語言,表示這個全域性變數的可見性限制在宣告它的原始檔內(c或者cpp檔案),因此不同的原始檔可以使用static宣告同名的全域性變數而不會衝突。雖然同名,實際上在記憶體中是不同的全域性變數。

static資料成員。表示這個成員只是邏輯上與宣告它的類相關,但實際上它不屬於任何乙個類物件。在記憶體中以單例形式存在,不會隨著類物件的建立和銷燬而存亡。

static成員函式。實際上相當於c語言的全域性函式,它沒有this指標,僅在邏輯上與類相關聯,在呼叫上線文中與任何類物件都沒有關聯,可以當成全域性函式來使用。

static 類成員有什麼作用

4樓:夜禮服假面

類可以宣告為 static 的,以指示它僅包含靜態成員。不能使用 new 關鍵字建立靜態類的例項。靜態類在載入包含該類的程式或名稱空間時由 .

net framework 公共語言執行庫 (clr;特指:c#語言) 自動載入。

使用靜態類來包含不與特定物件關聯的方法。例如,建立一組不操作例項資料並且不與**中的特定物件關聯的方法是很常見的要求。您應該使用靜態類來包含那些方法。

主要功能:它們僅包含靜態成員。

它們不能被例項化。

它們是密封的。

它們不能包含例項建構函式。

因此建立靜態類與建立僅包含靜態成員和私有建構函式的類大致一樣。私有建構函式阻止類被例項化。

優點:使用靜態類的優點在於,編譯器能夠執行檢查以確保不致偶然地新增例項成員。編譯器將保證不會建立此類的例項。

靜態類是密封的,因此不可被繼承。靜態類不能包含建構函式,但仍可宣告靜態建構函式以分配初始值或設定某個靜態狀態。

注意事項:靜態類不能有例項構造器。

靜態類不能有任何例項成員。 靜態類不能使用abstract或sealed修飾符。 靜態類預設繼承自根類,不能顯式指定任何其他基類。

靜態類不能指定任何介面實現。

靜態類的成員不能有protected或protected internal訪問保護修飾符。

C中,類的私有成員變數放在什麼段中,是在堆疊段中嗎

你說bai的應該是對 象的成員變數du 如 begar 不懂zhi程式設計的程式設計師 所說,物件dao的成版員變數就放權在物件內 如果物件本身是堆疊 ss 裡的,那麼它的 非靜態 資料成員也在堆疊裡如果物件本身是堆裡的,那麼它的 非靜態 資料成員也在堆裡如果物件本身是ds裡的,那麼它的資料成員也在...

C中關於static的問題

我來回答,靜態方法中,如果有輸出引數的話,該輸出引數必須是靜態成員才可以,靜態方法中使用的成員必須是靜態的。你這裡宣告的方法getdeptlist,如果兩個引數是輸入引數,那麼是不會報錯的,但是你的引數輸入後,經過函式該處理後,又輸出該引數,相當於成員級,故需使用靜態成員級引數。另外在使用時,直接呼...

怎樣在C定義類中定義訪問資料成員的成員函式

一般都是這樣做的啊,成員變數定義成private,提供對外的public函式,要訪問內部的成員變數的話,必須通過這種成員函式,get,set 資料成員和bai成員函式是乙個類的du兩個基本的屬性。成員函zhi數可dao以呼叫資料成員,資料成專員按照不同要求設為屬private public和prot...