1樓:匿名使用者
(1)在main函式中,假設有父類或者子類的例項物件,就須要有父類的虛擬函式的實內現。
(2)在容main函式中,假設沒有父類或者子類的例項物件,能夠不實現父類的虛擬函式。
(3)假設把虛擬函式寫成純虛擬函式,也就不須要實現了。也沒不會發生上述討論。
子類中實現了,子子類就不用實現。
子類沒實現的話,子子類就可能需要實現。
反正沒有實現這個=0的函式的類是無法建立物件的。
所以要例項化的類就要實現。
2樓:匿名使用者
子類中實現了,子子類就不用實現。。。
子類沒實現的話,子子類就可能需要實現。。。
反正沒有實現這個=0的函式的類是無法建立物件的。。。
所以要例項化的類就要實現,***。。。
c++中父類中有純虛擬函式,在子類中需要實現,問題:在子類的子類中也需要實現嗎?
3樓:小羊羊
c++中父類中有純虛擬函式,在子類中需要實現,那麼在子類的子類就不用實現了。
如果是子類沒實現的話,子子類就可能需要實現。希望能幫到你
c++ 在父類宣告一個純虛擬函式,怎樣在父類建構函式中呼叫子類覆蓋後的該純虛擬函式?
4樓:
不能,就算中bai轉一下也不行,du因為這個zhi時候還虛擬函式表還沒有dao改寫,也就是說版純虛函權
數還沒有實現,函式指標指是空的。這是時序的問題。
執行之後會報這個錯誤:
libc++abi.dylib: pure virtual function called!
[1] 2417 abort ./test而且多數情況下,連編譯期都過不去。
5樓:匿名使用者
建構函式在物件建立時被呼叫,父類都沒建立,他怎麼去呼叫子類的東西,想想你為什麼需要這樣的設計。
6樓:人生做回自己
在父親類的建構函式中不能呼叫子類的虛擬函式的。
基類中定義的虛擬函式,子類中必須要覆蓋嗎?為什麼?
7樓:匿名使用者
要看虛擬函式本身有沒有實現。
存沒有實現的純虛擬函式,那這個基類是不能例項化的。繼承這個基類的子類可以覆蓋也可以不覆蓋其虛擬函式。如果基類中的純虛擬函式在子類中沒有覆蓋,那這個子類還是一個虛類,不能例項化的。
8樓:匿名使用者
如果基類定義的純虛擬函式,那麼子類繼承下來的也是純虛擬函式,如果不給予實現,那麼便不能建立子類的例項,如果基類定義的是非純虛擬函式,那麼子類繼承下來的也是非純虛擬函式。都可以不予實現,因為自動繼承下來了,看你子類的需要。
9樓:匿名使用者
虛擬函式的目的就是在需要的時候實現,從而實現多型,如果必須覆蓋,還要虛擬函式有什麼意義
c++中父類中有純虛擬函式,在子類中需要實現,問題:在子類的子類中也需要實現嗎?
10樓:匿名使用者
子類中實現了,子子類就不用實現。。。
子類沒實現的話,子子類就可能需要實現。。。
反正沒有實現這個=0的函式的類是無法建立物件的。。。
所以要例項化的類就要實現,***。。。
c++中父類中含有一個虛擬函式,那麼子類中對其進行覆蓋的話,是不是需要返回值型別也一定相同?
11樓:匿名使用者
要覆蓋一個虛擬函式,那麼引數和返回值型別必須相同,否則不會覆蓋,只能過載!
12樓:匿名使用者
必須相同,否則在編譯時會報錯,指定了衝突的返回型別
c++使用虛擬函式的時候,子類也要使用virtual關鍵字嗎
13樓:pretty星空
c++規定,當一個成員函式被宣告為虛擬函式後,其派生類中的同名函式都自動成為虛擬函式。因此,在子類重新宣告該虛擬函式時,可以加,也可以不加,但習慣上每一層宣告函式時都加virtual,使程式更加清晰。
14樓:匿名使用者
不用的,隨你加不加,有virtual是可以被子類重寫的。
15樓:匿名使用者
不需要,那樣有點畫蛇添足。
16樓:白巫師
可以不用,c++並不強制在子類加virtual
17樓:暴君坎普
不用 當然為了方便** 還是寫上比較好
c在父類宣告純虛擬函式怎樣在父類建構函式
不能,就算中bai轉一下也不行,du因為這個zhi時候還虛擬函式表還沒有dao改寫,也就是說版純虛函權 數還沒有實現,函式指標指是空的。這是時序的問題。執行之後會報這個錯誤 libc abi.dylib pure virtual function called 1 2417 abort test而且...
子類重寫父類的方法,父類沒有異常,子類可以拋異常嗎
這就是java的重寫規則。對於異常重寫方法不能丟擲新的異常或者比被重寫方法宣告的檢查異常更廣的檢查異常。但是可以丟擲更少,更有限或者不丟擲異常。重寫規則之一 重寫方法不能比被重寫方法限制有更嚴格的訪問級別。但是可以更廣泛,比如父類方法是包訪問許可權,子類的重寫方法是public訪問許可權。比如 ob...
Python子類呼叫父類方法或子類定義的方法輸出會多出個None
我覺得最佳的回答的是不對的,在python中若是函式沒有定義return的結果,則會預設返回一個none def func a 1 b 2 a func print a none 在官方文件中也有說明的,而你列印出none的原因就是因為你在類的方法 中直接列印了字串沒有返回值,將方法中的pring改...