1 基類指針指向基類對象(正常使用)
2 派生類指針指向派生類對象(正常使用,不管是不是虛函數,調用的都是派生類的函數)
3 基類指針指向派生類對象(多態的體現,虛函數的話調用的是派生類的,非虛函數的話調用的是基類的)
指針不能使用只存在於派生類而不存在於基類中的元素,也就是指向的是派生類中基類的部分
4 派生類指針指向基類對象(一般不要這么用)
基類與派生類的指針和成員函數調用原理
1.如果以一個基礎類指針指向一個衍生類對象(派生類對象),那么經由該指針只能訪問基礎類定義的函數(靜態聯編)
2.如果以一個衍生類指針指向一個基礎類對象,必須先做強制轉型動作(explicit cast),這種做法很危險,也不符合生活習慣,在程序設計上也會給程序員帶來困擾。(一般不會這么去定義)
3.如果基礎類和衍生類定義了相同名稱的成員函數(非虛函數),那么通過對象指針調用成員函數時,到底調用哪個函數要根據指針的類型(基類指針or派生類指針)來確定,而不是根據指針實際指向的對象類型確定。
4.如果基礎類和衍生類定義了相同名稱的成員函數(虛函數virtual),那么通過對象指針調用成員函數時,到底調用哪個函數要根據指針實際指向的對象類型(基類對象or派生類對象)來確定,而不是根據指針的類型確定。
