靜態成員:
普通成員變數每個物件各自有乙份,靜態成員一共就乙份,為所有物件所共享
sizeof(class)時不會把類中的靜態成員變數大小算進來,因為其不是放在物件的內部了
靜態成員不具體作用於某乙個物件
靜態成員的訪問:
1、類名::成員名
2、物件名.成員名,形式如此,但並不作用於物件
3、指標->成員名,形式如此,但並不作用於物件
4、引用.成員名,形式如此,但並不作用於物件
靜態成員變數本質上是全域性變數,哪怕乙個物件不存在,類的靜態成員變數也存在。
靜態成員函式本質上是全域性函式。
設定靜態成員的目的是為了將和某些類緊密聯絡的變數和函式寫到類裡面,看上去像乙個整體,便於理解和維護
必須在定義類的檔案中對靜態成員變數進行一次說明或初始化,否則編譯能通過,鏈結不能通過。
classrectangle
~rectangle()
};intrectangle::totalnum = 0;
intrectangle::totalarea = 0;
intmain()
注意:上述程式段是不安全的,當使用rectangle類呼叫的是複製建構函式時,由於沒有指定複製建構函式,系統使用預設的複製建構函式,臨時物件生成的時候沒有增加total的總數,卻在消亡的時候呼叫析構函式減少total的總數。
靜態成員函式中,不能訪問非靜態成員變數,也不能呼叫非靜態成員函式,因為靜態成員不專屬於某個物件,訪問的非靜態成員到底來自哪個物件,說不通。
成員物件和封閉類:
乙個類的成員變數是另乙個類的物件。
包含成員物件的類叫封閉類。
注意:生成封閉類物件的時候,要明確物件中的成員物件是否需要初始化
定義封閉類的建構函式時,新增初始化列表:類名::建構函式(參數列):成員變數1(參數列),成員變數2(參數列)……{}
呼叫順序:
封閉類生成物件時:先執行所有成員物件的建構函式,然後執行封閉類的建構函式。
封閉類中有多個成員物件時,建構函式的呼叫順序和成員物件在類中的說明順序一致(type name )與在成員初始化列表中的出現順序無關。
封閉類的物件消亡時:先執行封閉類的析構函式,再執行成員物件的析構函式。
classtyer
tyer(inta1,intb1 )
};classengine
};classcar//初始化才呼叫建構函式
};intmain()
C 程式設計學習筆記3
條件結構 流程圖描述程式邏輯 1.流程圖是程式步驟的圖形化表示方法。2.以下圖形中,流程線用來連線相鄰的兩個步驟 每乙個程式都有且僅有乙個開始和結束。判斷和分支 1.這個程式在 balance 10 這個步驟出現了分支,balance 10 被稱為判斷 bool 型別 當判斷為 true 時,執行左...
《C專家程式設計》筆記3
const int grape int const grape int const grape 最後一種情況指標是唯讀的,上面兩種指標所指的物件是唯讀的 結構體可以用於段位,之前沒聽說過吧 includeint main struct bit field temp temp.a 1 printf d...
《C專家程式設計》筆記3
第三章 分析c語言的宣告 const int grape int const grape int const grape 最後一種情況指標是唯讀的,上面兩種指標所指的物件是唯讀的 結構體可以用於段位,之前沒聽說過吧 cpp include int main struct bit field temp...