關於C++和C#中的靜態方法的問題!

 http://zhidao.baidu.com/question/20341912.html
前幾天在看C#高級編程的時候看到關於靜態方法的問題
靜態方法在使用的時候不必實例化就能直接使用,如果實例化會出現怎麼樣的錯誤?自己可不可以去定義一個靜態方法,具體該如何去定義,可不

可以說得具體點,還有靜態方法有什麼特別的用途沒?


最佳答案:
實例方法比靜態方法多傳遞一個隱含的指針參數,該指針指向該方法所從屬的已被實例化的對象。這一區別的外在表現爲實例方法內可使用

this關鍵字代表所從屬的實例對象,而靜態方法不可使用this因爲靜態方法不針對任何實例對象。實例對象調用靜態方法會因參數中多出一個

指向自己的指針(this)而發生錯誤。

定義靜態方法只需加註static關鍵字即可。靜態方法獨立於對象實例之外,與對象是否已被實例化無關,調用靜態方法要用類定義的名稱而不

能用實例名稱如:
class a
{
...
public static void b(){} //靜態方法
public void d(){} //實例方法
}
a c = new a();

a.b();//正確的調用方式,與對象實例無關。
a.d();//錯誤的調用方式。
c.b();//錯誤的調用方式。
c.d();//正確的調用方式,隱含this指針,不需要也不允許顯式傳入對象指針。


不必實例化就能直接使用,是說在沒有生成任何對象時就能運用該方法,所以靜態方法裏不能對非靜態的成員變量做操作。一般靜態方法操作靜態成員變量或全局變量。

發佈了22 篇原創文章 · 獲贊 7 · 訪問量 20萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章