c 派生類物件賦值給基類物件

2021-07-30 07:57:57 字數 1052 閱讀 9381

基類物件和派生類物件之間的賦值關係具體是指:基類的物件可不可以賦值給子類物件或者子類物件可不可以賦值給基類物件。

一般來說,只有派生類的物件可以賦值給基類的物件,反之,則不可以。例如:

[cpp]view plain

copy

father a ;    

// 基類物件

son b ;       // 派生類物件

a = b ;       // 可以

b = a ;       // 不可以

為什麼派生類物件可以給基類物件賦值呢?反之則不可以呢?這是因為基類物件a的成員比派生類物件b的成員少。所以基類物件賦值給派生類物件時會出錯。上面是一種情況,還有另外一種情況:

[cpp]view plain

copy

father a ;                  

// 基類物件

son b ;                     // 派生類物件

father *pa = &b ;     // 可以

son *pb = &a ;         // 不可以

上面的指標賦值也就是說:基類的指標可以指向派生類物件,但是反過來則不行,派生類的指標不可以指向基類的指標。這是為什麼呢?這是因為派生類的物件所佔的儲存空間通常要比基類的物件大,原因就是派生類除了繼承基類的成員之外,還擁有自己的成員,所以基類的指標操作派生類的物件時,由於基類指標會向操作基類物件那樣操作派生類物件,而基類物件所占用的記憶體空間通常小於派生類物件,所以基類指標不會超出派生類物件去運算元據。

同樣的道理,基類的引用可以作為派生類物件的別名,但是反過來則不行,派生類的引用不可以作為基類物件的別名。例如:

[cpp]view plain

copy

father a ; 

// 基類物件

son b ;    // 派生類物件

father &f = b ; // 可以

son &s = a ;    // 不可以 

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

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

基類物件和派生類物件之間的賦值關係

基類物件和派生類物件之間的賦值關係具體是指 基類的物件可不可以賦值給子類物件或者子類物件可不可以賦值給基類物件。一般來說,只有派生類的物件可以賦值給基類的物件,反之,則不可以。例如 father a 基類物件 son b 派生類物件 a b 可以 b a 不可以為什麼派生類物件可以給基類物件賦值呢?...

基類物件和派生類物件之間的賦值關係

基類物件和派生類物件之間的賦值關係具體是指 基類的物件可不可以賦值給子類物件或者子類物件可不可以賦值給基類物件。一般來說,只有派生類的物件可以賦值給基類的物件,反之,則不可以。例如 father a 基類物件 son b 派生類物件 a b 可以 b a 不可以 為什麼派生類物件可以給基類物件賦值呢...