靜態方法和靜態成員變數

2021-07-06 07:58:22 字數 1195 閱讀 3390

所謂靜態方法和靜態成員變數,是指那些用static關鍵字修飾的方法或者變數,比如我們例子中的private static string company就是乙個靜態成員變數,而public static string getcompany()和public static void setcompany(string s)都是靜態方法。 

靜態的意思,是指該方法或者變數在整個類中只有乙份。我們說,類是用來建立物件的模板,就是說,我們建立物件的時候,每個物件都會有類中所宣告的成員變數的乙個副本。但是,對於靜態成員變數,在記憶體中只有乙個副本,所有的物件將共享這個副本。比如我們的例子中,所有employee所在的公司就只有乙個,所以我們沒有必要為每乙個employee的物件都保留乙個company的副本,所以我們把它宣告為靜態的成員變數。

所以,只要改變了company的值,對所有employee的物件都是起作用的。 

另一方面,靜態方法只能訪問靜態成員變數,比如我們的例子中,setcompany( )只能訪問company,如果它訪問name之類的變數,編譯器將會報錯。而且靜態方法的呼叫是 類名.方法名的方式來呼叫的,也可以用一般的 物件名.方法名 的方式來呼叫。 

實際上,我們先前用的system.out.println( )方法,就是乙個靜態的方法,所以我們可以直接用 類名.方法名 的方式呼叫。而乙個類裡如果有main函式都要宣告為靜態方法,因為乙個程式只能有乙個main函式入口。 

所以,只要改變了

company

的值,對所有

employee

的物件都是起作用的。

另一方面,

靜態方法只能訪問靜態成員變數,

比如我們的例子中,

setcompany( 

)只能訪問

company

,如果它訪問

name

之類的變數,

編譯器將會報錯。

而且靜態方法的呼叫是類名.

方法名的方式來呼叫的

,也可以用一般的

物件名.

方法名的方式來呼叫。

實際上,我們先前用的

system.out.println( )

方法,就是乙個靜態的方法,所以我們可以直接用類名

.方法名

的方式呼叫。

而乙個類裡如果有

main

函式都要宣告為靜態方法,因為乙個程式只能

有乙個main

函式入口。

靜態成員變數 和 靜態成員函式

資料成員可以分靜態變數 非靜態變數兩種.靜態成員 靜態類中的成員加入static修飾符,即是靜態成員.可以直接使用類名 靜態成員名訪問此靜態成員,因為靜態成員存在於記憶體,非靜態成員需要例項化才會分配記憶體,所以靜態成員不能訪問非靜態的成員.因為靜態成員存在於記憶體,所以非靜態成員可以直接訪問類中靜...

靜態成員變數和靜態成員函式

我們學到的類物件的成員變數一般都是這個物件專屬,不能為其他物件所共有。然而在實際程式設計中我們需要統計物件的數量等問題,所以就必須設定乙個類的物件所共有的變數,就是靜態成員變數。首先通過乙個簡單的例程 說明靜態成員如何使用。includeusing namespace std class a vir...

靜態成員變數和靜態成員函式

本章內容均為coursera中c 程式設計課件的整理 基本概念 靜態成員 在說明前面加了static關鍵字的成員。class crectangle 普通成員變數每個物件有各自的乙份,而靜態成員變數一共就乙份,為所有物件共享。sizeof 運算子不會計算靜態成員變數。class cmyclass 則 ...