抽象類也叫做介面類,在虛函式的後面寫上=0;那麼這個函式就變成了乙個純虛函式,包含純虛函式的類叫做抽象類,其不能例項化出物件。繼承了基類的派生類也不能例項化出物件,除非重寫純虛函式,只有重寫了純虛函式,派生類才能例項化物件。也就是說,純虛函式規範了派生類必須重寫虛函式,另外,純虛函式更體現出了介面繼承。
class
car;
class
bmw:
public car};
class
benz
:public car};
void
test()
上述就是介面繼承,那麼介面繼承與實現繼承有什麼區別呢?
普通函式的繼承是一種實現繼承,派生類繼承了基類函式,可以使用函式,繼承的是函式的實現。
虛函式的繼承是一種介面繼承,派生類繼承的是基類的介面,目的是為了重寫,達成多型的目的,繼承的是介面。
所以不打算實現多型的情況下,就不要把函式定義為虛函式。
多型 抽象類
多型 當中體現多型性,就是父類指向子類 左父右子 格式 父類名稱 物件名 new 子類名稱 介面名稱 物件名 new 實現類名稱 使用多型,物件向上轉型,是絕對安全的,但物件一旦向上轉型父類,就不能呼叫子類原本特有的類容 物件向下轉型,就是還原的動作 格式 子類名稱 物件名 子類名稱 父類物件 含義...
C 學習 多型 抽象類
多型 概念 run time binding 函式名和函式入口點的繫結發生在程式執行時刻 complie time binding 程式再編譯時進行函式名和函式入口的繫結 多型的本質 run time binding 多型的條件 1.必須有繼承 2.子類要把虛函式重寫 override 派生類的vi...
C 技術 多型 抽象類
2.實現過程是 用基類的指標類指向派生類的位址,在呼叫虛函式 因為呼叫虛函式是通 過查虛表執行函式的,但虛表中的虛函式指標可以在繼承的時候被子類覆蓋 3.在多型中會出現父類指標指向子類,那麼父類指標用完後會 delete,那麼這時候缺省會調 用父類的虛構函式,如果子類中有記憶體要釋放,那就被洩露掉了...