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

2021-03-04 09:22:03 字數 2140 閱讀 5630

1樓:匿名使用者

如果不是純虛擬函式,也就是基類不是抽象類的話,虛擬函式在子類中可以不實現!

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

2樓:匿名使用者

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

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

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

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

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

3樓:匿名使用者

我看了一些文獻 是不行的,虛擬函式是c++多型的體現,必須要定義

4樓:匿名使用者

在子類中可以不宣告,但是就無法使用了

5樓:匿名使用者

基類宣告虛擬函式只是提供一個介面,也就是實現多型的關鍵,子類基本都要繼承的,如果有一個子類不需要實現這個函式,說明你的繼承關係有問題,最好改變一下繼承體系

6樓:

虛擬函式宣告只能砸出現在類定義中的函式原型宣告中, 而不能在成員函式實現的時候

由成員函式來呼叫或者是通過指標、引用來訪問虛擬函式。

7樓:匿名使用者

是的,只有在子類中宣告,才能夠在呼叫的時候檢索到子類中重寫函式的資料。

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

8樓:小羊羊

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

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

c++中父類的虛擬函式必須要實現嗎

9樓:匿名使用者

虛擬函式是自帶實現的,因此派生類中可以選擇實現自己的,也可以直接使用基版類的。

但是純虛擬函式一般權未提供實現,所以派生類基本需要提供實現,但是即使基類提供了預設實現,如果派生類需要進行例項化,那麼派生類還是需要提供實現的。

10樓:匿名使用者

你可以定義純虛擬函式,這部需要實現

c++使用虛擬函式的時候,子類也要使用virtual關鍵字嗎

11樓:pretty星空

c++規定,當一個成員函式被宣告為虛擬函式後,其派生類中的同名函式都自動成為虛擬函式。因此,在子類重新宣告該虛擬函式時,可以加,也可以不加,但習慣上每一層宣告函式時都加virtual,使程式更加清晰。

12樓:匿名使用者

不用的,隨你加不加,有virtual是可以被子類重寫的。

13樓:匿名使用者

不需要,那樣有點畫蛇添足。

14樓:白巫師

可以不用,c++並不強制在子類加virtual

15樓:暴君坎普

不用 當然為了方便** 還是寫上比較好

c++中虛擬函式必須有定義嗎?

16樓:呵呵

需要例項化類的虛擬函式必須有定義,而僅僅定義帶有虛擬函式的類且虛擬函式沒有實現,該類編譯是可以通過的!

純虛擬函式出現在介面類中,並賦值為0,不要為該函式分配函式地址,從而阻止類的例項化!純虛擬函式是沒有定義的,如果實現了也不是純虛擬函式啦!

一般的成員函式可以只有宣告,前提是在應用中不能呼叫該函式,否則會因找不到定義產生連線錯誤!

c++中類中成員函式宣告為虛擬函式,是不是意味著把成員函式實現推遲到執行時?

17樓:丐幫幫主

推遲到執行時指的是

什麼?虛擬函式是c++用來實現多型性的,如果成員函式是虛回函式,通答過基類的指標或引用(可能指向基類或某個子類)可以呼叫實際物件的型別對應的虛擬函式 。

你說的推遲應該是晚繫結,意思是在執行時再確定物件的型別。

18樓:

不是這個意思,是子類中可以重置這函式

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

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

c中的虛擬函式是什麼,c中虛擬函式與純虛擬函式的區別是什麼?

c 中的虛擬函式是允許在派生類中重新定義與基類同名的函式,並且可以通過基類指標或引用來訪問基類和派生類中的同名函式。c 中的虛擬函式的作用主要是實現了多型的機制。關於多型,簡而言之就是用父型別別的指標指向其子類的例項,然後通過父類的指標呼叫實際子類的成員函式。這種技術可以讓父類的指標有 多種形態 這...

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

要覆蓋一個虛擬函式,那麼引數和返回值型別必須相同,否則不會覆蓋,只能過載!必須相同,否則在編譯時會報錯,指定了衝突的返回型別 c 中,類的繼承 父類當使用虛擬函式時候,子類對該函式進行重寫的話,屬於子類成員函式對虛擬函式的覆蓋!可以這麼理解。換句話說,你呼叫子類的虛擬函式,程式會執行你重寫的 而不是...