靜態成員函式和靜態成員變數學習筆記

2021-10-06 23:57:16 字數 836 閱讀 6448

靜態成員:在說明前面加了static關鍵字的成員

class crectangle

;

和普通成員變數的區別:普通成員變數每個物件有各自的乙份,而靜態成員變數一共就乙份,為所有物件共享。sizeof運算子不會計算靜態成員變數
class a

;sizeof

(a)==

4;

和普通成員函式的區別:普通成員函式必須作用在某個物件,而靜態成員函式並不並不具體作用於某個物件

因此靜態成員不需要通過物件進行訪問

如何訪問靜態成員:

1.類名::靜態成員

a:

:b;

2.物件名.成員名
a a1;

a1.b;

3.指標->成員名

4.引用.成員名

靜態成員變數實質上是全域性變數,哪怕乙個物件都不存在,類的成員變數也存在。靜態成員函式本質是全域性函式

設定靜態成員這種機制的目的是將和某些類緊密關聯的全域性變數和函式寫到類裡面,看上去是像乙個整體,易於理解和維護

注意:必須在定義類的檔案中對靜態成員變數進行一次說明或初始化否則編譯會通過,鏈結不會通過。在靜態成員函式中,不能訪問非靜態成員變數也不能呼叫非靜態成員函式,因為靜態成員函式是屬於類的不屬於某個物件,而非靜態成員變數是屬於該類的某個物件的,不能呼叫非靜態成員函式,是因為該函式可能訪問了非靜態成員變數

void crectangle:

:printtotal()

crectangle:

:printtotal()

;//無法解釋w是那個物件的

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

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

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

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

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

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