今天寫程式發現出現非靜態成員的非法呼叫錯誤
原來原因是:
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 中的...