- 當顯示字元類型的指標時,這個指標將顯示字串而不是指標的內容,如果要在字元指標中顯示地址,只需把它強制轉換成void指標
- 只有地址可以被儲存在指標變數中
- 函數頭結尾處的const,使函數成為常量函數,常量函數不能改變調用對象,主要是為了確保函數不會意外地改變對象。
- 建構函式的三種用法
1) 初始化類資料成員,類的資料成員不能在類的聲明中被初始化,因為每個對象都有自己的變數,並且必須由正在被建立的對象所需要的值來初始化。
2) 建構函式還可以用於驗證資料。
3) 建構函式必須用於為對象分配記憶體。
Tip:建構函式不能有傳回型別,即使是空類型,如果提供了任意類型的建構函式,編譯器就不會提供預設的建構函式了。所以一般還是顯式包含一個一個預設的建構函式比較好兩種 5.複製建構函式
1) 執行對象所有組件的簡單變數和變數之間的賦值複製,也成為位複製
2) 邏輯複製,複製內容為指標
6.複製建構函式使用的三種情況
1) 當使用另一對象作為參數初始化一個對象時
2) 當對象被值傳遞給函數時
3) 當對象從函數中返回時
8.類和結構的區別:只有一條,就是資料成員在結構中預設為public,而在類中預設是private。
9.如果函數是被遞迴調用的,就不要使用內嵌函式。
10.不要使用賦值操作符在初始化列表中初始化資料成員。
11.如果想把繼承後的私人類型重新定義為protected類型,就用using和範圍解析操作符重寫它。一個例子
1 class Base
2 {
3 protected:
4 int dam;
5 };
6 class Derive:private Base
7 {
8 protected:
9 using Base::dam;
10 };
12. 多態性的三個條件:繼承,虛函數,指標或引用
13. 靜態繫結:當建立了類型為基類的的指標時,無論該指標再指向衍生類別的什麼對象,編譯器都會調用和指標類型基類有關的函數,稱為靜態繫結
14. 不能有虛建構函式,但可以建立虛解構函式,不能有虛建構函式,但可以建立虛解構函式,為什麼呢?舉個例子,基類動態分配了一個浮點數數組p,衍生類別動態分配了浮點數數組q,當使用基類指標指向一個衍生類別對象時,這個指標只能看到基類,當這個對象被刪除時,就只有基類數組被刪除,從而給衍生類別造成了記憶體流失。
15. 基類函數被聲明為純虛函數的兩種情況:
1)
不能參與衍生類別可能需要的動作
2)
想強制每個衍生類別重定義這個函數
方法:virtual
return_type identifier(parameter list)=0;
16. 抽象類別:至少有一個純虛函數的類,下面為用途
1)
允許多態性
2)
可以定義能夠在衍生類別中被繼承並且不用重定義的具體成員
3)
為必須在衍生類別中重定義的純虛函數提供了模型
17. 向上和向下強制類型轉換:當衍生類別對象被轉換成基類對象時,發生向上強制轉換,當基類對象被轉換成衍生類別對象時,發生向下強制轉換,同時,向下強制轉換指向對象的指標是可以的,但是需要使用動態強制轉換來完成,也就是運行期間完成的。文法如下:dynamic_cast<type>(data);
18. 一個程式的優良性可以由以下原則衡量,一是模組是獨立的,二是函數具有單一的目的。
19. 建構函式,解構函式,非成員函數,和賦值操作符在衍生類別是並沒有被繼承,必須重新定義它們。
20. 基類的建構函式執行時間早於衍生類別的建構函式,而解構函式要晚於衍生類別的解構函式。
21. 對基類建構函式的調用應該在衍生類別的初始化表部分。