派生類與基類間的轉化

2021-06-07 15:54:20 字數 734 閱讀 3294

派生類到基類:

呼叫函式時:

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

將派生類物件傳遞給接受基類物件(並非它的引用)的函式時,形參型別是固定的,只是用派生類物件中的基類部分初始化或賦值基類物件。

初始化賦值時:

對基類進行初始化或者賦值,實際上是在呼叫建構函式和賦值操作符。用派生類初始化基類時理論上有兩種可能:

1.基類定義了形參為派生類的建構函式和賦值操作符(雖然這種情況幾乎不可能)。此時的初始化和賦值操作由這些函式決定。

2.基類顯示或者隱式的定義了自己的建構函式和賦值函式,這些函式的形參一般都是基類。此時,存在派生類引用到基類引用的轉化。

派生類「切掉」為基類經歷了以下幾個步驟:

1.派生類轉化為基類引用,僅僅意味著乙個基類的引用繫結到了派生類物件上、

2.該引用作為實參傳遞給複製建構函式或者賦值建構函式

3.這些操作符使用派生類的基類部分掉用基類的建構函式和賦值操作符。

4.一旦操作執行完畢,物件就是基類的了

基類到派生類:

基類到派生類的自動轉化是不存在的。需要派生類時不能使用基類物件,因為基類物件不包括派生類成員。

甚至,當指向基類的指標繫結到派生類時,也不能用這個這個指標給指向派生類的指標賦值。編譯器通過靜態型別來判斷轉化是否合法,如果你確定轉化是安全的,那麼可以通過強制型別轉化。

派生類與基類間的轉化

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

基類與派生類

初學c 的時候,很多人都很頭疼各種訪問標號下基類與派生類的關係,其實,死記硬背肯定不是乙個好的辦法,要知道它們之間的關係,先要分析一下訪問標號是如何產生的 在沒有繼承之前,類的只有兩類使用者 類本身和類的使用者。把類成員通過public和private劃分恰好體現了這一分割 類的使用者只能訪問類的p...

基類與派生類的轉換

一 基類與派生類的轉換 3種繼承方式 公用 保護 私有繼承 中,公用派生類才是基類真正的子型別,它完整地繼承了基類的功能。不同型別資料之間在一定條件下可以進行型別的轉換。基類與派生類物件之間是否也有賦值相容的關係,可否進行型別間的轉換?回答是可以的。基類與派生類物件之間有賦值相容關係,由於派生類中包...