與基類物件和派生類物件相關的賦值相容問題

2021-07-04 02:37:26 字數 913 閱讀 3511

派生類物件間的賦值操作依據下面的原則: n

(1)如果派生類有自己的賦值運算子的過載定義,即按該過載函式處理。 n

(2)派生類未定義自己的賦值操作,而基類定義了賦值操作,則系統自動定義派生類賦值操作,其中基類成員的賦值按基類的賦值操作進行。 n

(3)二者都未定義專門的賦值操作,系統自動定義預設賦值操作(按位進行拷貝)。

另一方面,基類物件和派生類物件之間允許有下述的賦值關係(允許將派生類物件「當作

」基類物件來使用): n

(1)基類物件

= 派生類物件;

只賦「共性成員

」部分 ,反方向的下述賦值不被允許 n

(2)指向基類物件的指標

= 派生類物件的位址;

下述賦值不允許:指向派生類型別的指標

=基類物件的位址。

注:訪問非基類成員部分時,要經過指標型別的強制轉換 n

(3)基類的引用

= 派生類物件;

下述賦值不允許:派生類的引用

= 基類物件。

注:通過引用只可以訪問基類成員部分

#include<

iostream.h

>

class base

intgeta

() };

class

derived:public

base

intgetb

() };

voidmain ()  

程式執行後的顯示結果如下:

bs1.geta()=123

bs1.geta()=246

pb->

geta

()=246

((derived*)

pb)->

getb

()=468 

關於基類指標 派生類指標 基類物件派 生類物件問題

1 基類指向派生類的指標 2 派生類指向基類的指標 3 以及將派生類指標強制轉換為基類指標 4 將基類指標強制轉換為派生類指標 無論是基類指向派生類還是派生類指向基類,重點就是哪個類的指標就呼叫哪個類的方法,而輸出的是指標指向的物件。基類指向派生類的指標即將派生類物件賦給基類指標,如果輸出的話,呼叫...

基類物件與派生類物件的關係

基類物件與派生類物件的使用關係 1.派生類物件作為基類物件處理 由於派生類具有所有基類的成員,所以把派生類的物件賦給基類物件是合理的,不過要求這種繼承方式必須是public方式。但是,反過來賦值會使基類中一具有派生類的成員 因為派生類的成員通常是比基類的成員多 所以這是不允許的。2.基類指標指向派生...

基類物件與派生類物件的使用關係

基類物件與派生類物件的使用關係 1.派生類物件作為基類物件處理 由於派生類具有所有基類的成員,所以把派生類的物件賦給基類物件是合理的,不過要求這種繼承方式必須是public方式。但是,反過來賦值會使基類中一具有派生類的成員 因為派生類的成員通常是比基類的成員多 所以這是不允許的。2.基類指標指向派生...