靜態成員和非靜態成員

2021-10-01 20:30:42 字數 1115 閱讀 6690

靜態成員和非靜態成員

1.含義:

在c++de 成員變數被宣告為static(稱為靜態成員變數)在類被例項化時建立,通過類進行訪問,意味著它為該類的所有例項所共享,當某個類的例項修改了該靜態成員變數,其修改值為該類的其它所有例項所見,也就是說乙個類的所有例項的同一靜態變數都是同乙個值。

不帶有 static 修飾符宣告的變數稱做非靜態變數,在物件被例項化時建立,通過物件進行訪問。

2.區別

(1)非靜態成員變數儲存到堆記憶體中,靜態變數儲存到方法區的靜態區中

(2)非靜態成員變數隨著物件的出現而出現,隨物件的消失而消失,靜態變數隨著類的出現而出現隨類的消失而消失。

//示例

using system;

using system.collections.generic;

using system.text;

namespace example01

static void main(string args)

", class1.staticstr);

class1 tmpobj1 = new class1();

tmpobj1.notstaticstr = "tmpobj1";

class1 tmpobj2 = new class1();

tmpobj2.notstaticstr = "tmpobj2";

//非靜態變數通過物件進行訪問,不同物件的同一非靜態變數可以有不同的值

console.writeline("tmpobj1's notstaticstr: ", tmpobj1.notstaticstr);

console.writeline("tmpobj2's notstaticstr: ", tmpobj2.notstaticstr);

console.readline();

} }

}//結果:

//class1's staticstr: class

//tmpobj1's notstaticstr: tmpobj1

//tmpobj2's notstaticstr: tmpobj2

靜態成員和非靜態成員

類中的成員要麼是靜態的要麼是非靜態的。一般來說,靜態成員都歸屬於類所有,使用 static 關鍵字來宣告,不能在類的例項中訪問靜態成員 非靜態成員屬於類的例項 物件所有,不能按照類訪問靜態成員來訪問。下面用乙個例項來幫助理解 using system using system.collections...

C 靜態成員和非靜態成員

一 c 靜態成員和非靜態成員 1.c 靜態成員和非靜態成員 當類中的某個成員使用static修飾符時,就會被宣告為靜態成員。類中的成員要麼是靜態成員,要麼是非靜態成員。一般情況下,靜態成員屬於整個類所有,被該類的所有例項所共享。而非靜態成員則屬於類的例項 物件所有,只被該例項所共享。因此,對於類的靜...

靜態成員與非靜態成員

靜態成員屬於類,而非靜態成員屬於類的例項。兩者的主要區別是static關鍵字,靜態成員使用static關鍵字宣告,放在型別之前,而非靜態成員則沒有。每次類被例項化之後,類中的非靜態成員就會隨著例項複製乙份過去,而靜態成員則仍然保留在類中。靜態成員和非靜態成員是不能互相呼叫。也就是說,靜態方法只能呼叫...