虛函式
引入原因:為了方便使用多型特性,我們常常需要在基類中定義虛函式。
純虛函式在基類中是沒有定義的,必須在子類中加以實現。
純虛函式
引入原因:在很多情況下,基類本身生成物件是不合情理的。
純虛函式就是基類只定義了函式體,沒有實現過程,定義方法如下;
virtual void eat() = 0; 直接=0 不要 在cpp中定義就可以了。
純虛函式相當於介面,不能直接例項話,需要派生類來實現函式定義。
虛函式在子類裡面也可以不過載的;但純虛必須在子類去實現,
普通成員函式是靜態編譯的,沒有執行時多型,只會根據指標或引用的「字面值」類物件,呼叫自己的普通函式;虛函式為了過載和多型的需要,在基類中定義的,即便定義為空;純虛函式是在基類中宣告的虛函式,它可以再基類中有定義,且派生類必須定義自己的實現方法。
一旦父類的成員函式宣告virtual,其子類的函式不管有沒有宣告為virtual,都是虛函式。
普通函式如果不被使用,可以只有宣告沒有定義,虛函式必須要有定義,即使是乙個空實現,因為編譯器無法確定會使用哪個函式。
虛函式和純虛函式的區別
首先 強調乙個概念 定義乙個函式為虛函式,不代表函式為不被實現的函式。定義他為虛函式是為了允許用基類的指標來呼叫子類的這個函式。定義乙個函式為純虛函式,才代表函式沒有被實現。定義純虛函式是為了實現乙個介面,起到乙個規範的作用,規範繼承這個類的程式設計師必須實現這個函式。1 簡介 假設我們有下面的類層...
虛函式和純虛函式的區別
a.編譯時 多型性 通過 過載函式實現 b執行時 多型性 通過虛函式實現。首先 強調乙個概念 定義乙個函式為虛函式,不代表函式為不被實現的函式。定義他為虛函式是為了允許用基類的指標來呼叫子類的這個函式。定義乙個函式為純虛函式,才代表函式沒有被實現。定義純虛函式是為了實現乙個介面,起到乙個規範的作用,...
虛函式和純虛函式的區別
首先 強調乙個概念 定義乙個函式為虛函式,不代表函式為不被實現的函式。定義他為虛函式是為了允許用基類的指標來呼叫子類的這個函式。定義乙個函式為純虛函式,才代表函式沒有被實現。定義純虛函式是為了實現乙個介面,起到乙個規範的作用,規範繼承這個類的程式設計師必須實現這個函式。1 簡介 假設我們有下面的類層...