c++ try catch語句 什么是虛函數(shù)和純虛函數(shù),有什么區(qū)別?
什么是虛函數(shù)和純虛函數(shù),有什么區(qū)別?虛擬函數(shù)和純虛擬函數(shù)都可以在它們的子類中重寫。它們之間的區(qū)別在于:(1)純虛函數(shù)只有定義,沒有實(shí)現(xiàn),虛函數(shù)既有定義又有實(shí)現(xiàn)代碼。純虛函數(shù)一般沒有代碼實(shí)現(xiàn)部分,如vi
什么是虛函數(shù)和純虛函數(shù),有什么區(qū)別?
虛擬函數(shù)和純虛擬函數(shù)都可以在它們的子類中重寫。它們之間的區(qū)別在于:(1)純虛函數(shù)只有定義,沒有實(shí)現(xiàn),虛函數(shù)既有定義又有實(shí)現(xiàn)代碼。純虛函數(shù)一般沒有代碼實(shí)現(xiàn)部分,如virtual void print()=0,而一般虛函數(shù)必須有代碼實(shí)現(xiàn)部分,否則函數(shù)將是未定義的。Virtual void print(){printf(“this is Virtual functionn”)}(2)包含純虛函數(shù)的類不能定義其對象,而包含虛函數(shù)的類可以定義其對象。
虛函數(shù)或純虛函數(shù)主要用來解決什么問題?
虛擬函數(shù)用于后期動態(tài)綁定,可以實(shí)現(xiàn)運(yùn)行時(shí)多態(tài)性。說白了,它是一個(gè)函數(shù)指針,決定了運(yùn)行時(shí)要調(diào)用的目標(biāo)。純虛函數(shù),顧名思義,是一個(gè)完全虛函數(shù)。它沒有綁定到任何實(shí)際函數(shù),是空的。純虛函數(shù)主要用于防止類的實(shí)例化。類的派生必須實(shí)現(xiàn)函數(shù),否則就不能實(shí)例化,這相當(dāng)于C#或Java的抽象函數(shù)。如果一個(gè)類中的所有函數(shù)都是純虛函數(shù),那么這個(gè)類就構(gòu)成了一個(gè)接口。
在C 中函數(shù)指針有什么作用呢,為什么不直接調(diào)用函數(shù)而要使用函數(shù)指針?
可用作回調(diào)函數(shù)。只需將函數(shù)指針作為參數(shù)傳遞給另一個(gè)函數(shù),另一個(gè)函數(shù)就可以在執(zhí)行期間或執(zhí)行之后通過該指針調(diào)用預(yù)置的用戶函數(shù)。