虛函數:在成員函數前面加上virtual,函數就變成了虛函數
繼承函數:子類可以調用父類的函數,叫做繼承了函數,即函數的調用權
三種函數:
non-virtual 函數: 你不希望 derived class 重新定義 (override, 重寫) 它.
virtual 函數: 你希望 derived class 重新定義 (override, 重寫) 它 , 且你對它已有默認定義 。
pure virtual 函數: 你希望 derived class 一定要重新定義 (override 重寫)它 , 你對它沒有默認定義 。
純虛函數:const=0
objectID()函數是non-virtual 函數,它可以生成ID號,不希望子類去重寫,父類的定義已足夠
error()函數,如果操作失敗,比如可以打印一串錯誤的標識,其設置為虛函數,是因為若子函數有不同的想法不同的打印信息,可進行重寫。重新定義后,子類調用時即是調用自己重寫的函數。
draw()函數是純虛函數,必須讓子類重寫定義。因為隨著類的不同,draw的方式也不同,所以需要子類自己去重寫。
通過子類的對象調用父類的函數
框架將可以寫好的部分寫好,將不能決定的部分寫成虛函數,讓子類自己去定義,子類再調用父類函數的時候,遇到自己定義的部分,會去執行自己定義的函數,如圖中灰色線路徑所示。
程序示例: