C 中父類中含有虛擬函式,那麼子類中對其進行覆蓋的話,是不是需要返回值型別也一定相同

2021-04-19 01:29:43 字數 2521 閱讀 7828

1樓:匿名使用者

要覆蓋一個虛擬函式,那麼引數和返回值型別必須相同,否則不會覆蓋,只能過載!

2樓:匿名使用者

必須相同,否則在編譯時會報錯,指定了衝突的返回型別

c++ 中,類的繼承:父類當使用虛擬函式時候,子類對該函式進行重寫的話,屬於子類成員函式對虛擬函式的覆蓋!

3樓:匿名使用者

可以這麼理解。

換句話說,你呼叫子類的虛擬函式,程式會執行你重寫的**,而不是定義在父類裡的**。

4樓:wssz**x的春天

有沒有**,你這樣我也看不懂!

c++中父類中有純虛擬函式,在子類中需要實現,問題:在子類的子類中也需要實現嗎?

5樓:匿名使用者

子類中實現了,子子類就不用實現。。。

子類沒實現的話,子子類就可能需要實現。。。

反正沒有實現這個=0的函式的類是無法建立物件的。。。

所以要例項化的類就要實現,***。。。

基類中定義的虛擬函式,子類中必須要覆蓋嗎?為什麼?

6樓:匿名使用者

要看虛擬函式本身有沒有實現。

存沒有實現的純虛擬函式,那這個基類是不能例項化的。繼承這個基類的子類可以覆蓋也可以不覆蓋其虛擬函式。如果基類中的純虛擬函式在子類中沒有覆蓋,那這個子類還是一個虛類,不能例項化的。

7樓:匿名使用者

如果基類定義的純虛擬函式,那麼子類繼承下來的也是純虛擬函式,如果不給予實現,那麼便不能建立子類的例項,如果基類定義的是非純虛擬函式,那麼子類繼承下來的也是非純虛擬函式。都可以不予實現,因為自動繼承下來了,看你子類的需要。

8樓:匿名使用者

虛擬函式的目的就是在需要的時候實現,從而實現多型,如果必須覆蓋,還要虛擬函式有什麼意義

c++中父類中有純虛擬函式,在子類中需要實現,問題:在子類的子類中也需要實現嗎?

9樓:小羊羊

c++中父類中有純虛擬函式,在子類中需要實現,那麼在子類的子類就不用實現了。

如果是子類沒實現的話,子子類就可能需要實現。希望能幫到你

c++父類中有純虛擬函式,在子類的子類中也需要實現嗎?

10樓:匿名使用者

(1)在main函式中,假設有父類或者子類的例項物件,就須要有父類的虛擬函式的實內現。

(2)在容main函式中,假設沒有父類或者子類的例項物件,能夠不實現父類的虛擬函式。

(3)假設把虛擬函式寫成純虛擬函式,也就不須要實現了。也沒不會發生上述討論。

子類中實現了,子子類就不用實現。

子類沒實現的話,子子類就可能需要實現。

反正沒有實現這個=0的函式的類是無法建立物件的。

所以要例項化的類就要實現。

11樓:匿名使用者

子類中實現了,子子類就不用實現。。。

子類沒實現的話,子子類就可能需要實現。。。

反正沒有實現這個=0的函式的類是無法建立物件的。。。

所以要例項化的類就要實現,***。。。

c++ 在父類宣告一個純虛擬函式,怎樣在父類建構函式中呼叫子類覆蓋後的該純虛擬函式?

12樓:

不能,就算中bai轉一下也不行,du因為這個zhi時候還虛擬函式表還沒有dao改寫,也就是說版純虛函權

數還沒有實現,函式指標指是空的。這是時序的問題。

執行之後會報這個錯誤:

libc++abi.dylib: pure virtual function called!

[1] 2417 abort ./test而且多數情況下,連編譯期都過不去。

13樓:匿名使用者

建構函式在物件建立時被呼叫,父類都沒建立,他怎麼去呼叫子類的東西,想想你為什麼需要這樣的設計。

14樓:人生做回自己

在父親類的建構函式中不能呼叫子類的虛擬函式的。

c++中函式覆蓋和使用虛擬函式有什麼區別

15樓:逍遙俠

我覺得最明顯的復區別,給你制舉個例子。

有兩個類bai

du :父類 class 子類 student 同有一個函式zhi名為 num的函式

父類物件

dao class 子類物件 student

那麼函式覆蓋就是 student.num(); //直接用子類物件呼叫了子類函式

而虛擬函式則是 class *pt;

pt=&student; pt->num(); //用父類指標物件呼叫子類函式

能大致明白嗎?函式覆蓋是在子類物件呼叫函式時(父類和子類的函式頭一樣)選擇了子類自己的函式,而不是呼叫繼承於父類的函式

而虛擬函式則是定義了父類的指標物件,而用它可以呼叫到子類物件的函式

虛擬函式在子類中可以不實現嗎,C中父類中有純虛擬函式,在子類中需要實現,問題在子類的子類中也需要實現嗎

如果不是純虛擬函式,也就是基類不是抽象類的話,虛擬函式在子類中可以不實現 c 中父類中有純虛擬函式,在子類中需要實現,問題 在子類的子類中也需要實現嗎?子類中實現了,子子類就不用實現。子類沒實現的話,子子類就可能需要實現。反正沒有實現這個 0的函式的類是無法建立物件的。所以要例項化的類就要實現,c ...

C 父類中宣告瞭虛擬函式以後是不是在子類以及子類的子類中都要宣告並重寫這個函式

我看了一些文獻 是不行的,虛擬函式是c 多型的體現,必須要定義 在子類中可以不宣告,但是就無法使用了 基類宣告虛擬函式只是提供一個介面,也就是實現多型的關鍵,子類基本都要繼承的,如果有一個子類不需要實現這個函式,說明你的繼承關係有問題,最好改變一下繼承體系 虛擬函式宣告只能砸出現在類定義中的函式原型...

c中父類能呼叫子類的方法嗎

其實也不一定啊,父類可以通過例項呼叫子類繼承的父類的相應方法啊。舉例 都是public class father class son father 然後執行這段 fatherf newfather sons new son f.refer s console.writeline f.writesom...