引用
引用變量不能單獨存在,必須引用某個已經存在的變量。
引用變量占用的空間大小取決于引用的類型
本質上相當于指針常量,只能初始化一次,不可再代表其他變量
引用不需要判斷非空,優于指針
不能返回局部變量的引用,同指針
重載
在同一作用域中,函數名相同,形參表不同的多個函數叫重載。
可以更改參數類型,個數,位置
相同名稱實現不同處理(例如求面積,圓形+三角形+正方形)
運算符重載的表現形式有兩種,可重載為友元函數或成員函數,但也可以重載普通的函數。
成員函數有this指針,友元函數沒有this指針。
Complex operator+(Complex &c2)
friend Complex operator+(Complex &c1, Complex &c2)
當無法修改左操作數的類時,使用全局函數進行重載
=,[],(),->操作符只能通過成員函數進行重載
<<,>>操作符只能通過友元函數進行重載
內聯函數
inline 處理上相當于宏函數,但可以正常運算,優于宏函數
宏函數是預處理時展開的,內聯函數是在編譯時展開的。
封裝
類包含兩部分:屬性(成員變量),方法(成員函數) (默認私有)
類中默認包含一個無參數的構造函數,如果自定義一個構造函數(有參/無參),就不會再調用默認的構造函數。
默認的拷貝函數為淺拷貝。
構造函數的調用次序和析構函數相反
用new分配數組空間時不能指定初值。如果由于內存不足等原因而無法正常分配空間,則new會返回一個空指針NULL,用戶可以根據該指針的值判斷分配空間是否成功。
new能自動執行構造函數
delete能自動執行類的析構函數
每個非靜態成員函數中都默認包含一個this的指針
靜態成員變量和靜態成員函數
把一個類的成員說明為 static 時,這個類無論有多少個對象被創建,這些對象共享這個 static 成員
靜態成員屬于類,它不是對象成員
static 成員變量不可以在構造函數中的初始化列表中進行初始化;
靜態成員函數能否調用非靜態成員---->不能
靜態成員函數能否調用靜態成員---->能
非靜態成員函數能夠調用靜態成員---->能
非靜態成員函數能否非靜態成員---->能
常成員函數,常對象,常成員變量 const
常成員函數:本質修飾this指針的 ,常成員函數不能修改成員變量;
常成員函數能不能是靜態成員函數--->不能,因為靜態成員函數沒有this指針;
繼承
1子類擁有父類的所有成員變量和成員函數
2子類可以擁有父類沒有的方法和屬性
3子類就是一種特殊的父類
4子類對象可以當作父類對象使用
5繼承規則
public繼承:
父類成員在子類中保持原有訪問級別
private繼承:
父類成員在子類中變為private成員
protected繼承:
父類中public成員會變成protected
父類中protected成員仍然為protected
父類中private成員仍然為private
多態
多態實現的條件
1公有繼承
2虛函數重寫
3父類的指針指向子類對象,或者子類對象初始化父類對象。
虛函數重寫:函數需要是虛函數,重寫時函數必須要完全一致。