抽象類和虛基類的區(qū)別 C/C :抽象類與虛基類的區(qū)別?
C/C :抽象類與虛基類的區(qū)別?語法中有抽象類和虛擬基類,這并不意味著你必須使用它們。我通常不使用花哨的東西。我可以想到使用抽象類,也許可以利用這個優(yōu)勢:包含純虛函數(shù)的類是抽象類?;悓嶋H上并不使用
C/C :抽象類與虛基類的區(qū)別?
語法中有抽象類和虛擬基類,這并不意味著你必須使用它們。我通常不使用花哨的東西。我可以想到使用抽象類,也許可以利用這個優(yōu)勢:包含純虛函數(shù)的類是抽象類?;悓嶋H上并不使用這個函數(shù),它只是告訴編譯器在這里聲明一個虛函數(shù),讓它在派生類中定義。為類族提供公共接口。例如,要計算平面形狀的面積,在抽象類基類中,虛float area()const=0派生類三角形,派生類circle定義area()的具體計算。一旦我們有了一個派生的三角形或圓,我們就可以使用相同的函數(shù)名。Area()計算面積。虛擬基類的構(gòu)造應該在派生類中完成,并且在派生類本身的構(gòu)造之前完成。當存在派生類1、派生類2和生成的派生類12時,派生類12只執(zhí)行一次虛擬基類的構(gòu)造。虛擬基類只有一個對象。至于它的特殊用途,我沒想到。
怎樣理解c 中的虛基類和虛函數(shù).純虛函數(shù)?
虛擬函數(shù)和純虛擬函數(shù)有以下區(qū)別。(1) 如果在類中聲明了虛函數(shù),則即使該函數(shù)為空,也會實現(xiàn)該函數(shù)。它的目的是使函數(shù)能夠包含在其子類中。這樣,編譯器就可以使用后期綁定來實現(xiàn)多態(tài)性。純虛函數(shù)只是一個接口,一個函數(shù)的聲明,需要在子類中實現(xiàn)。(2) 虛擬函數(shù)不能在子類中重載,但是純虛擬函數(shù)必須在子類中實現(xiàn),就像Java接口一樣。一般來說,在許多函數(shù)中添加虛擬元素是一個好習慣。雖然犧牲了一些性能,但是面向?qū)ο蟮亩鄳B(tài)性增加了,因為很難預測父類中的函數(shù)不在子類中,并且它的實現(xiàn)不會被修改。(3) 虛函數(shù)類用于“實現(xiàn)繼承”,不僅繼承接口,而且繼承父類的實現(xiàn)。當然,你也可以完成你自己的實現(xiàn)。純虛函數(shù)注重接口的統(tǒng)一性,通過子類實現(xiàn)。(4) 具有純虛函數(shù)的類稱為虛基類。這種基類不能直接生成對象。只有繼承并重寫虛擬函數(shù)后才能使用。這樣的類也稱為抽象類。