靜態方法不可呼叫非靜態成員變數,Why?

2021-06-11 09:46:12 字數 390 閱讀 7123

public class staticdemo

}

上述**,eclipse編譯器會報錯"cannot make a static reference to the non-static field m_age". why?

here is my understanding:

首先,我們要清楚幾個問題

(1)靜態成員何時存在?

答曰:類存在了,靜態成員就存在了

(2)非靜態成員何時有意義,即何時能被呼叫?

答曰:沒有物件的存在,你叫我如何有意義。先有物件,再來調我。

現在,應給明了了吧,定義完類,讓乙個已存在的東西(靜態成員函式)呼叫乙個還不存在的東西(非靜態成員變數),error !

靜態成員函式呼叫非靜態成員變數 p

c 會區分兩種型別的成員函式 靜態成員函式和非靜態成員函式。這兩者之間的乙個重大區別是,靜態成員函式不接受隱含的this自變數。所以,它就無法訪問自己類的非靜態成員。在某些條件下,比如說在使用諸如pthread 它不支援類 此類的多執行緒庫時,就必須使用靜態的成員函式,因為其位址同c語言函式的位址相...

用靜態成員函式呼叫非靜態成員變數

今天寫程式要用到乙個計時器,然後需要建立乙個新的執行緒,這個執行緒是ctestdlg的乙個成員函式,必須定義為靜態的.但是這個時候就不能去訪問非靜態成員變數了,這裡找到乙個很好的解決辦法 先上 1.執行緒函式的定義 private intcount time ctime c time bool ge...

為什麼靜態方法無法直接呼叫非靜態成員變數和方法

靜態方法無法直接呼叫非靜態成員變數和方法 看到這句話,要想到形容的是這樣的如下 靜態方法裡面無法呼叫非靜態變數 下面在寫乙個對比非靜態的方法和靜態方法呼叫變數對比 問題原因 靜態變數和靜態的方法是屬於類,不屬於物件,呼叫的時候不需要例項化 當然如果你非要例項化之後在呼叫也是可以的 非靜態的變數和方法...