您好,登錄后才能下訂單哦!
這篇文章運用簡單易懂的例子給大家介紹C++中多態公有繼承的實現方法,代碼非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。
方法的行為應取決于調用該方法的對象。這種較復雜的行為稱為多態——具有多種形態,即同一個方法的行為隨上下文而異。
virtual實現了對象調用正確的方法或方法序列。
實現多態的兩種機制:
聲明函數時若使用關鍵字virtual,則這些方法被稱為虛方法。
class Brass {private: ...public: ... virtual void ViewAcct() const; virtual ~Brass(){} }
BrassPlus :
基類聲明了一個虛構函數,是為了確保釋放派生對象時,按正確的順序調用析構函數(后面見虛函數作用)。
Brass dom("Dominic Banker", 11224, 4183.45); BrassPlus dot("Dorothy Banker", 12118, 2592.00); dom.ViewAcct(); // use Brass::ViewAcct()dot.ViewAcct(); // use BrassPlus::ViewAcct()
兩個ViewAcct()原型表明將有2個獨立的方法定義。基類版本的限定名為Brass::ViewAcct(),派生類版本的限定名為BrassPlus::ViewAcct()。
通過引用或指針而不是對象調用方法:
如果沒有使用關鍵字virtual,程序將根據引用類型或指針類型選擇方法:
// behavior with non-virtual ViewAcct()// method chosen according to reference typeBrass &b1_ref = dom; Bross &b2_ref = dot; b1_ref.ViewAcct(); // use Brass::ViewAcct()b2_ref.ViewAcct(); // use Brass::ViewAcct()
如果要在派生類中重新定義基類的方法,通常應將基類方法聲明為虛的。這樣,程序將根據對象類型而不是引用或指針的類型來選擇方法版本。為基類聲明一個虛析構函數也是一種慣例,使用虛析構函數可以確保正確的析構函數序列被調用(即從派生類對象到基類對象一次調用它們的析構函數)。
調用基類方法:在派生類方法中,標準技術是使用作用域解析運算符來調用基類方法:
Brass::ViewAcct(); // display base portion
關于C++中多態公有繼承的實現方法就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。