派生類物件間的賦值操作依據下面的原則: 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.基類指標指向派生...