每一個派生類對象包含一個基類部分,這就意味著可以像使用基類對象一樣在派生類對象上執行操作。因為派生類對象也是基類對象,所以存在從派生類類型的引用到基類類型的自動轉換,即,可以將派生類對象的引用轉換為基類對象的引用,對指針也類似。
基類對象既可以作為獨立對象存在,也可以作為派生類對象的一部分而存在,因此,一個基類對象可能是也可能不是一個派生類對象的一部分,結果沒有從基類引用到派生類引用的自動轉換,指針也是如此。
相對於引用或者指針而言,對象轉換的情況更為復雜。雖然一般可以使用派生類型的對象對基類類型對象進行初始化或者賦值,但,沒有從派生類對象到基類類型對象的直接轉換。
可以直接使用派生類的對象對基類對象進行賦值或者初始化。
可以直接使用派生類的引用或者對象對基類引用進行賦值或者初始化。
引用轉換不同於轉換對象
將派生類對象傳遞給希望接受基類引用的函數,引用直接綁定到該對象,對象本身未被復制。
將派生類對象傳遞給希望接受基類對象的函數,形參類型是固定的-----在編譯和運行時形參都是基類類型對象,如果實參是派生類對象,則該派生類對象的基類部分被復制到形參。
派生類到基類轉換的可訪問性
像繼承的成員一樣,從派生類到積累的轉換可能是也可能不是可訪問的。轉換是否可訪問取決於在派生類的派生列表中指定的訪問標號。如果是public繼承,則可以,否則不可以轉換。