C 語言筆記系列之十 靜態成員

2021-09-30 11:39:23 字數 1238 閱讀 7810

1.靜態成員

(1)由關鍵字static修飾

靜態變數定義語句在編譯階段就執行,執行過程中不再執行。

(2)分類:靜態資料成員、靜態成員函式。

(3)靜態成員時類的所有物件共享的成員,而不是某乙個物件的成員。

2.靜態成員的使用

(1)在定義說明前加上static關鍵字。例如:

static int x;

(2)靜態資料成員必須進行初始化,並且初始化必須在類外完成。

(3)靜態資料成員的初始化

資料型別 類名::靜態資料成員名 = 值;//注意這裡沒有static出現

(4)絕對不能使用物件名來使用靜態資料成員,再次強調靜態資料成員是屬於整個類公有,而非某乙個物件。

物件名.靜態成員名  //錯誤

(5)正確的使用方式

類名::靜態資料成員

(6)如果靜態資料成員的訪問許可權允許,才可以在類外訪問。

3.靜態資料成員舉例

#include

class tc

void display()

};int tc::k = 0;

int main()

輸出結果:

i = 1, k = 2

i = 1, k = 2

若改為:

tc::tc()

4.類的靜態成員函式

(1)類的靜態成員函式屬於類而不是屬於物件。

(2)類的靜態成員函式視線中不可直接使用非靜態成員,但是可以直接使用靜態成員。

(3)若在靜態成員函式中引用非靜態成員,必須加物件名(靜態成員函式接收引數然後通過引數來呼叫)。

5.補充

test t1(t2); //呼叫拷貝建構函式

test t1(5);  //呼叫建構函式

6.找出以下**片段中的錯誤並分析原因。

class myclass

;void myclass::fun()

分析:錯誤出在將類的靜態成員放在函式中初始化,正確的初始化方法是放在類外且在函式外完成。

class myclass

;void myclass::fun()

分析:錯誤出在兩個地方,第乙個地方,函式的定義和使用上出現了引數上的不一致;第二個地方類的靜態成員函式可以引用靜態資料成員,但對於非靜態資料成員的引用必須通過物件來完成。

補充:(1)全域性變數中不出現static修飾,static要麼出現在類內要麼出現在函式內。

(2)引用物件時,類的物件必須先完成初始化。

C 學習筆記之靜態成員

靜態成員就是在成員變數和成員函式前加上關鍵字static,稱為靜態成員。靜態成員分為 class person int person m a 10 int person m b 10 void test01 intmain class person static int m a 靜態成員變數 int...

C 系列之類的靜態成員

靜態成員函式中不能呼叫非靜態成員,非靜態成員函式中可以呼叫靜態成員,因為靜態成員在編譯時已經存在,先於物件而存在,因而無法使用物件的成員函式 靜態成員變數使用前必須先初始化,否則會在linker時出錯 靜態成員的特性 不管這個類建立了多少個物件,而其靜態成員只有乙個拷貝 副本 這個拷貝被所有屬於這個...

C 之靜態成員變數和靜態成員函式

一 靜態成員變數 1 關鍵字 static 可以用於說明乙個類的成員,靜態成員提供了乙個同類物件的共享機制 2 把乙個類的成員說明為 static 時,這個類無論有多少個物件被建立,這些物件共享這個 static 成員 3 靜態成員區域性於類,它不是物件成員,在類的外部進行初始化 二 靜態成員函式 ...