C 學習筆記 非靜態成員函式的非法呼叫錯誤

2021-08-19 14:13:43 字數 455 閱讀 7588

今天寫程式發現出現非靜態成員的非法呼叫錯誤

原來原因是:

1 靜態成員函式相當於全域性函式,只有乙個類名字空間的限制。靜態成員函式是類的函式,無需指明是某個例項物件在操作,既可以是類在呼叫其靜態成員函式也可以是其實例物件來呼叫。注:靜態成員函式只能訪問靜態成員變數和靜態成員函式。

2 類成員函式式成員內部的函式,同乙個類的物件例項有很多,每乙個例項都有自己不同的成員變數值。每個例項通過成員函式來操作其成員變數。所以成員函式的呼叫必須明確的指出是哪乙個例項物件在操作。注:類成員函式當然也可以訪問靜態成員變數或者靜態成員函式

下面舉例說明

class test  

static

int g()

public:

enum

; };

int main()

C 靜態成員函式訪問非靜態成員

如果類沒有被建立,則沒有對應的成員,也就無法訪問 下面這種方法需要先建立類,並將類作為引數傳遞給靜態成員函式才能訪問。include using namespace std class person class student public person static void get age st...

C 中靜態成員函式訪問非靜態成員變數

class a private int menber 編譯上述 出錯。原因很簡單大家都知道,靜態成員函式不能訪問非靜態成員,這是因為靜態函式屬於類而不是屬於整個物件,靜態函式中的 member可能都沒有分配記憶體。靜態成員函式沒有隱含的this自變數。所以,它就無法訪問自己類的非靜態成員。那要想訪問...

C 中靜態成員函式訪問非靜態成員變數

private intmenber 編譯上述 出錯。原因很簡單大家都知道,靜態成員函式不能訪問非靜態成員,這是因為靜態函式屬於類而不是屬於整個物件,靜態函式中的 member可能都沒有分配記憶體。靜態成員函式沒有隱含的this自變數。所以,它就無法訪問自己類的非靜態成員。看過一篇很好的文章 c 中的...