一、類和對象
1.本章概要
2.C++中的結構體(struct與class)?升級為類
(1)類及成員函數的兩種定義方式?
? ? ? ? ? ? 聲明與定義分離
(2)權限?
注意1:struct/class在權限上的區別
(3)封裝
(4)作用域
(5)創建對象
(6)對象大小的計算與存儲
? ? ? ? ?注:此處是方式3即成員函數放在公共代碼區,非類的內部
注意1:內存對齊的主要原因包括
- 平臺和移植性。不同的硬件平臺可能對內存訪問有特定的要求。某些硬件平臺只能訪問特定地址處的特定類型數據,如果數據未對齊,可能導致硬件異常或性能下降。
- 性能。為了提高訪問速度,對齊數據可以使處理器更高效地加載數據,減少因數據跨越多個內存頁或緩存行而導致的額外訪問時間。
- 存儲空間優化。內存對齊有助于減少內存碎片,提高內存利用率,使結構體或對象的大小更加緊湊,節省內存空間。
- 訪問效率。內存對齊使得處理器可以一次訪問獲取所需數據,而不是進行多次訪問。
- 硬件IO特性。內存的IO操作通常以特定的數據寬度(如64位)為單位進行,因此內存對齊對于提高IO效率至關重要。
?注意2:空類大小
(7)this指針?
1、特性及本質
2.受this影響下C/C++的對比
二、類中的函數與操作符重載
1.本章概要
2.六個默認成員函數
(1)構造函數
? ? ? ? ? 注意1:當手動實現該函數時,保證其函數與類名相同,具體參數、函數體視具體情況定
? ? ? ? ? 注意2:可以重載是因為可能有多種初始化的方式
? ? ? ? ? 注意3:何時適合自己寫,何時無需自己寫
(2)析構函數
注意1:何時適合自己寫,何時無需自己寫
(3)拷貝構造函數
注意1:深拷貝,深拷貝必須自己實現,要與默認的生成的淺拷貝區分
三、總結:1.注意析構/構造何時需自己寫,何時不需。2.注意拷貝構造有深淺拷貝之分。3.注意內置數據類型與自定義數據類型對三種函數的影響4.一般“內置”“動態申請需手動釋放”的需要自己實現,相反則不需??
四、賦值等運算符的重載
注意1:賦值運算符重載是默認生成的,其他如大于小于則不是
五、const成員函數
六、(const)取地址運算符重載
注意:同之前的默認成員函數一樣是默認的、也不可重載成全局函數,不常用
七、Date類實現與本章知識點運用
? ?