基類對象不能引用派生類對象 關(guān)于C 基類、派生類的引用和指針?
關(guān)于C 基類、派生類的引用和指針?指向基類的指針或引用指向派生類的實例,這在面向?qū)ο缶幊讨蟹浅3R?。A*PA=New B;這是指向派生類實例的基類指針。B A&;RB=B這是指向(引用)派生類
關(guān)于C 基類、派生類的引用和指針?
指向基類的指針或引用指向派生類的實例,這在面向?qū)ο缶幊讨蟹浅3R姟?/p>
A*PA=New B;這是指向派生類實例的基類指針。
B A&;RB=B這是指向(引用)派生類的基類引用的實例。
指針PA和參考Rb的訪問范圍完全由PA和Rb定義的范圍決定,與它們所指向的目標無關(guān)。
通過基類指針或引用訪問派生類實例的意義在于,這種指針和引用可用于訪問基類下的所有派生類對象。一方面,可以使用面向?qū)ο蟮摹岸鄳B(tài)性”特性。通過基類指針或引用調(diào)用虛函數(shù)時,實際執(zhí)行派生類對象的函數(shù),使用這種方法,指針或引用端的代碼不需要隨派生類的不同而改變,但可以達到執(zhí)行最適合派生類的函數(shù)的目的類(即派生類本身的成員函數(shù));另一方面,它可以使程序模塊具有良好的可替換性,用一個派生類替換另一個派生類,而程序的其他部分不需要做任何更改就可以正常運行并發(fā)揮新的派生類的功能。
PS:基類指針和引用可用于訪問被視為基類對象的派生類對象。理論基礎(chǔ)是:派生類對象也必須是基類對象。
派生類對象和基類對象是什么樣的關(guān)系?
派生對象可以直接引用基類指針,但派生對象只能引用基類指針。
基類對象和派生類對象有什么關(guān)系?
(1)派生類對象可以為基類對象賦值。(2) 派生類對象可以替換基類對象來為基類對象賦值或初始化基類對象的引用。(3) 如果函數(shù)的參數(shù)是基類對象或基類對象的引用,則相應的參數(shù)可以是子類對象。(4) 派生類對象的地址可以分配給指向基類對象的指針變量,即使它指向基類對象,指向類對象的指針變量也可以指向派生類的對象