1. 程式人生 > >虛函數與純虛函數

虛函數與純虛函數

運行時 表函數 純虛函數 ++ 抽象類 邏輯 必須 特殊 函數

前言

最近面試的時候面試官問了這樣的問題,自己雖然大致知道他們之間的區別,但當時面試時有些邏輯混亂。所以面試完想好好總結一番。

虛函數

C++的虛函數主要作用是“運行時多態”,父類中提供虛函數的實現,為子類提供默認的函數實現。簡要來說就是子類可以重寫父類的虛函數實現子類的特殊化

純虛函數

C++中包含純虛函數的類,被稱為是“抽象類”。抽象類不能使用new出對象,只有實現了這個純虛函數的子類才能new出對象。簡要來數,純虛函數在基類中是沒有定義的,必須在子類中加以實現!

定義一個函數為虛函數,不代表函數為不被實現的函數,而是為了允許用基類的指針來調用子類的這個函數。
定義一個函數為純虛函數,才代表函數沒有被實現,而是為了實現一個接口,起到一個規範的作用,規範繼承這個類的程序員必須實現這個函數。

虛函數與純虛函數