靜態成員函式(物件導向的static關鍵字)

2022-05-23 08:51:11 字數 1013 閱讀 8441

靜態成員函式

與靜態資料成員一樣,我們也可以建立乙個靜態成員函式,它為類的全部服務而不是某乙個類的具體物件服務。靜態成員函式與靜態資料成員一樣,都是類的內部實現,屬於類定義的一部分。普通的成員函式一般都隱含乙個this指標,this指標指向類的物件本身,因為普通成員函式總是具體的屬於某個類的具體物件的。通常情況下,this都是預設的。如函式fn()實際是this->fn()。但是與普通函式相比,靜態成員函式由於不是與任何的物件相聯絡,因此它不具有this指標。從這個意義上講,它無法訪問屬於類物件的

非靜態資料成員,也無法訪問非靜態成員函式,它只能呼叫其餘的靜態成員函式。下面舉個靜態成員函式的例子。

1 #include2

using

namespace

std;34

class

myclass5;

1314

int myclass::sum = 0;//

定義並初始化靜態資料成員

15 myclass::myclass(int a, int b, int

c)16

2223

void myclass::getsum()//

靜態成員函式的實現

2428

29int

main()

30

關於靜態成員函式,可以總結為以下幾點:

·出現在類體外的函式定義不能指定關鍵字static;

·靜態成員之間可以相互訪問,包括靜態成員函式訪問靜態資料成員和訪問靜態成員函式;

·非靜態成員函式可以任意地訪問靜態成員函式和靜態資料成員;

·靜態成員函式不能訪問非靜態成員函式和非靜態資料成員;

·由於沒有this指標的額外開銷,因此靜態成員函式與類的全域性函式相比速度上會有少許的增長;

·呼叫靜態成員函式,可以用成員訪問操作符(.)和(->)為乙個類的物件或指向類物件的指標呼叫靜態成員函式,也可以直接使用如下格式:

《類名》::《靜態成員函式名》(《參數列》)

呼叫類的靜態成員函式。

c 物件導向 之 內聯函式 this 靜態成員

如果乙個函式是內聯的,那麼在編譯時,編譯器會把該函式的 副本放置在每個呼叫該函式的地方。用inline指定,內聯函式通常短小精悍沒有while和for迴圈,能夠幫助提公升程式執行的速度 include using namespace std inline int max int x,int y 程式...

C 的物件導向 C 的靜態成員

static關鍵字 什麼是靜態成員 class person endif int person height 190 類外要定義靜態成員變數,如果不賦值預設為0,如果不定義編譯會出錯,找不到該成員 方法一 靜態方法的實現 void person print 靜態成員的特徵 include using...

靜態成員 靜態成員函式

reference to non static member function must be called sort numbers.begin numbers.end cmp 做演算法題的時候遇到的乙個問題,和成員函式相關,這裡記錄一下備忘。首先上 class solution string p...