派生類與基類間的賦值相容性

2022-09-18 23:45:10 字數 1634 閱讀 7117

在任何需要基類物件的地方都可以用公有派生類的物件來代替,這條規則稱賦值相容規則。

它包括以下情況:

私有派生和保護派生不具備賦值相容性

示例**:  ( **測試: )

1 #include 2

3using

std::cout ;

4using

std::endl ;56

class

base710

11 ~base( )

1213 base& operator=( const base&)

1418

19} ;

2021

class publicinherit : public

base

2225

26 ~publicinherit( )

2728

} ;29

30class privateinherit : private

base

3134

35 ~privateinherit( )

3637

} ;38

class protectinherit : protected

base

3942

43 ~protectinherit( )

4445

} ;46

47int main( int argc, char **ar** )

48

執行結果:

1 --------------- create obj ! ---------------

2 create the base obj !

3 create the base obj !

4 create the publicinherit obj !

5 create the base obj !

6 create the privateinherit obj !

7 create the base obj !

8 create the protectinherit obj !

910 -------- assignment occur to obj ! --------

11 assignment operator occur to the base obj !

1213 ------ assignment occur to pointer ! -------

1415 -------------- destroy obj ! ---------------

16 destroy the protectinherit obj !

17 destroy the base obj !

18 destroy the privateinherit obj !

19 destroy the base obj !

20 destroy the publicinherit obj !

21 destroy the base obj !

22 destroy the base obj !

C 派生類與基類的賦值

class a class b a void main 可以把派生類賦值給基類。我們知道賦值,是呼叫了類的賦值運算子。所以當派生類給基類賦值時,呼叫了基類的複製運算子函式,該函式的引數是基類物件的const 引用,那麼 a b,實際就是用基類引用派生類,然後將派生類中基類部分賦值給對應的基類成員。而...

派生類與基類間的轉化

派生類到基類 呼叫函式時 將派生類物件傳遞給希望接受基類引用的函式,此時並不發生派生類到基類的型別轉化。因為引用直接繫結到派生類上,物件並沒有複製,只是將派生類的基類部分的位址傳遞給基型別的引用。將派生類物件傳遞給接受基類物件 並非它的引用 的函式時,形參型別是固定的,只是用派生類物件中的基類部分初...

派生類與基類間的轉化

派生類到基類 呼叫函式時 將派生類物件傳遞給希望接受基類引用的函式,此時並不發生派生類到基類的型別轉化。因為引用直接繫結到派生類上,物件並沒有複製,只是將派生類的基類部分的位址傳遞給基型別的引用。將派生類物件傳遞給接受基類物件 並非它的引用 的函式時,形參型別是固定的,只是用派生類物件中的基類部分初...