c 中的成員與關鍵字

2022-06-16 08:00:21 字數 1800 閱讀 5274

成員指類中的兩個分類:

資料成員:常量、字段(靜態字段

,例項字段

)(注意

:類成員變數叫做字段

,欄位是變數的一種

,隸屬於類。

)函式成員:屬性、方法、巢狀類、索引器、事件、運算子、例項建構函式、析構函式、靜態建構函式

許可權修飾符:

public:可修飾類和型別成員

任何地方都可以訪問到public類

internal:可修飾類和型別成員

只能在同一程式集內訪問到internal類

private:可修飾型別成員

不可被子類繼承

protect:可修飾型別成員

可被子類繼承

它們的訪問許可權如下:

**於部落格:

static:靜態。可修飾類、字段、屬性和方法

標記為static的字段、屬性和方法可以不用建立例項,直接類名

.xx使用,下面詳細說明下

static

先解釋下靜態成員和非靜態成員的區別

靜態成員屬於所有,非靜態成員屬於類的例項所有

每建立乙個類的例項,都會在記憶體中為非靜態成員新分配一塊記憶體;而靜態成員屬於類所有,為各個類公用,所以無論類建立了多少例項,類的靜態成員在記憶體中都只佔同一塊記憶體。

static有三種用法,分別是用於變數前、方法前和類前

變數前:

因為在記憶體中一直占用的同一塊記憶體,所以每次使用該變數所在的方法、類和自定義類時,變數值為最後一次被賦值的值(可以理解為每次呼叫後值都會疊加),稱為靜態變數

方法前:

該方法為所在類或自定義持有,而不是這個類所有,也稱為靜態方法。靜態方法只能訪問類中的靜態成員,但可以建立其他類的例項(除了靜態類,因為靜態類無法建立例項)。

深入了解的原因就是,因為靜態方法在類例項化前就可以使用了,而類中非靜態變數必須在例項化之後才能分配記憶體,這樣靜態方法在呼叫時無法判斷非靜態變數使用的記憶體位址,所以無法使用。

實際上靜態變數和靜態方法效率上要比例項高,因為靜態方法和靜態變數建立後始終使用同一塊記憶體,而使用例項的方式會建立多個記憶體。但這樣帶來的缺點就是不能自動進行銷毀,而例項化的則可以做銷毀。

ps:所以在靜態方法中要呼叫非靜態的方法,需要建立非靜態方法所在的類的例項,然後呼叫類中的那個非靜態方法。

類前:

靜態類無法建立例項。類下的方法全是靜態方法,類下的非靜態方法都是無法使用的。所以如果自定義的靜態類中想建立public方法時不允許的

(vs code

中會提示錯誤,加上

static即可)

以上參考自大佬部落格:

,寫的非常好,看完茅塞頓開

C 關鍵字this和靜態成員

一 關鍵字this 1 include using namespace std class cdummy int cdummy isitme cdummy param int main 2 執行 root localhost test test yes,a is b3 說明 關鍵字this通常被用在...

c中的關鍵字

一 register 作用 請求編譯器盡可能的將變數存在cpu內部暫存器中,一般的變數存在記憶體中,當需要時cpu再從記憶體中把它抓取到cpu中,使用register把它存在cpu中省去了cpu從記憶體中抓取資料的時間,提高執行效率。注意 1 盡可能,因為cpu記憶體有限,不可能全放在裡面,一般把頻...

C 中struct關鍵字和class關鍵字的區別

剛開始接觸 c 看到 中有struct關鍵字,還以為是用了結構體,結果後來發現 struct 和 class 一樣都用於類的定義,於是把兩者的差別記錄於此。一句話總結 兩者均可用於定義類,唯一的區別是兩者定義的類的預設訪問許可權有差別。其實比兩者差別更重要的是,我很好奇為什麼 c 中會存在兩個用於定...