為什么要用父類指向子類對象?
如果是通過對象名調用虛函數(如b.foo()),在編譯階段就能確定調用的是哪一個類的虛函數,所以屬于靜態聯編。
如果是通過基類指針調用虛函數(如a->foo()),在編譯階段無法從語句本身確定調用哪一個類的虛函數,只有運行時,a指向某一類對象后,才能確定調用的是哪一類的虛函數。故為動態關聯。
為什么要用父類指向子類對象?
如果是通過對象名調用虛函數(如b.foo()),在編譯階段就能確定調用的是哪一個類的虛函數,所以屬于靜態聯編。
如果是通過基類指針調用虛函數(如a->foo()),在編譯階段無法從語句本身確定調用哪一個類的虛函數,只有運行時,a指向某一類對象后,才能確定調用的是哪一類的虛函數。故為動態關聯。