亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

Animal animal = dog 難道不是dog包含的比animal多嗎?

Animal animal = dog 難道不是dog包含的比animal多嗎?那在animal指向dog的過程中,不是會損失一部分(重載也丟失了)?

反向的 Dog dog =animal ,并不會損失數據,只是會有空值。那為什么又不可以?

嘗試進行理解:
這里的animal只是一個指針,父類的指針可以指向子類的對象,反之不行。這樣對嗎?


正在回答

2 回答

編程語言是仿照現實情況做處理的。Animal animal = dog,anmimal指針可以指向子集中的一部分。這個沒問題。你說的dog包含的多,只是特征多。父類包含的是大家共有的信息,是抽象,肯定特征少。比如動物都會吃,不一定都會象狗一樣看門。animal指向dog的過程中,它的類型還是animal,不是dog。所以重載不會丟失。

Dog dog =animal,這句,如果不把animal強制轉型,這句話會報錯。因為兩者類型不同。而且,如果這個animal不是事先已經指向子類的指針,在Dog dog =(Dog)animal;轉型過程中也是錯誤的,即使編譯不報錯,運行也會報錯。也就是說:Animal animal = Animal();Dog dog =(Dog)animal;運行時會報錯。只有Animal animal = Dog();Dog dog =(Dog)animal;才會不報錯。所以向下轉型本身意義不大,不是都能轉的。

父類的指針可以指向子類的對象。這個沒錯。因為Dog肯定是Animal。反過來。Animal一定是Dog嗎?肯定不是。

1 回復 有任何疑惑可以回復我~

謝謝大佬?spacer.gif?

0 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

Animal animal = dog 難道不是dog包含的比animal多嗎?

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號