C++_類繼承2-多態公有繼承
阿新 • • 發佈:2019-02-23
派生 bras 兩種 方法 多態 一個數 上下 strong 根據
有時候希望同一個方法在派生類和基類中的行為是不同的。換句話說,方法的行為取決於調用該方法的對象。這種較復雜的行為稱為多態——具有多種形態。即同一種方法其行為隨上下文而異。有兩種重要的機制可用於實現多態公有繼承:
在派生類中重新定義基類的方法。
使用虛方法。
如果要在派生類中重新定義基類的方法,通常應將基類方法聲明為虛的。這樣,程序將根據對象類型而不是引用或指針的類型來選擇方法版本。為基類聲明一個虛析構函數也是一種慣例。這樣做是為了確保釋放派生對象時,按正確的順序調用析構函數。註意virtual只用在聲明中,不能用在定義中。
虛方法的演示:
假設要同時管理Brass和BrassPlus賬戶,如果能使用同一個數組來保存Brass和BrassPlus對象,將很有幫助。這是可能的使用指向Brass類型的指針,就能保證這個數組來表示多種類型的對象,又保證數組的元素都是同一種類型的。這樣由於使用的是公有繼承模型,因此Brass指針既可以指向Brass對象,也可以指向BrassPlus對象。
為何要使用虛析構函數:
如果析構函數不是虛的話,則將只調用對應指針類型的析構函數。
虛方法就是給引用或指針調用對象時根據對象的類型確定調用哪個方法而設計的。不加virtual的話,就會根據引用或指針的類型調用方法了,這就容易造成一些問題。
C++_類繼承2-多態公有繼承