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

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

老師,為啥總是 使用父類對象實例化子類?實際應用中是不是子類對象實例化子類更好?

老師,為啥總是 使用父類對象實例化子類??我想主要是為了教學,對么?

那么,在真實的實際應用設計中,是不是更多的是使用:類對象(類型)實例化子類更好些?這樣就能充分的使用子類的所有特殊成員了。。。

正在回答

7 回答

多態解決的是動態綁定的問題。所謂動態綁定,舉個例子就是animal.say(),但是不同的不同的animal比如dog,cat,pig它們的叫聲是不一樣的,animal.say()能識別出不同的動物,從而調用其各自的叫聲。一個程序要靈活,很大程度依靠動態綁定,延遲決策到運行時。

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

慕移動2313051

"animal.say()能識別出不同的動物",怎么識別?。恳粋€父類指針不也只能指向一個子類對象嗎?要想識別不同的動物,不也得定義多個父類指針,然后分別指向不同的子類對象嗎?
2018-06-07 回復 有任何疑惑可以回復我~
#2

Alex_ZM 回復 慕移動2313051

把定義好的多個父類指針*animal1,*animal2,..., *animalN放到animal類型的數組里,for循環調用
2019-01-04 回復 有任何疑惑可以回復我~

集中存儲,區別對待,區分調用,子類創建對象后,所繼承的所有父類們都可以在這個子類中獲取想要的數據的,然后調用

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

一個父類實現多個子類的命令,厲害!

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

也有些困惑

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

Father *p_children = new Children(xxx)? 是用父類指針指向子類對象,不是“使用父類對象實例化子類”。 eg:

處理函數? Action(Animal *p);

定義對象是用子類? Pig pig????????Horse horse...

開始活動??? Action(&pig)???? Action(&horse)...???? 這時只需傳子類地址到Action函數,不必寫區別處理Pig, Horse...的函數了。? 大概思想如此,建議看看多態方面的內容!

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

使用父類對象實例化子類

是為了實現多態! ? 如此場景:

? ? ?只需向一群動物發一條指令:開始活動。 豬會睡覺、馬會跑、狗會叫... ? ? ? 使用父類指針,一條指令就夠了,使用子類指針,每種動物都得區別對待!

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

UFO的青春

同學你好,我還是有個疑問,那么你這個思想代碼如何實現呢? 比如Father *p_children = new Children(xxx); 父類指針也只能實例化一種動物?。?按你這么來,豈不也要分別進行豬,馬,狗的父類實例化? 恕我愚昧,問下
2016-04-08 回復 有任何疑惑可以回復我~
#2

丿琴丶殤 回復 UFO的青春

你這樣就可以直接用p指向Father的各個子類(的成員函數)了,不然還要重新實例化子類的指針來分別指向各自的成員函數
2016-08-28 回復 有任何疑惑可以回復我~

路過~

既然使用了繼承機制,就意味著可能會有多個子類去繼承父類的內容,繼而在不同的子類中增添其獨有的部分。童鞋你的意思應該是用父類聲明,建立子類的實例吧。那么聲明類型是父類,也就代表它能夠根據需要指向所需的子類實例。

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

chris6179 提問者

不是,我需要的是 用 子類 聲明,建立子類的實例。 如代碼: Children *p_children = new Children(xxx); 而不是視頻教程中的:Father *p_children = new Children(xxx);
2016-01-09 回復 有任何疑惑可以回復我~
#2

Jabin_Aronvoy 回復 chris6179 提問者

要讓p_children能夠使用Children的獨有方法,只需轉換回Children即可。那么倘若現在有Children2也繼承了Father,我們在不清楚一個對象最終會是Children還是Children2的時候直接聲明為Father才是最合適的。實現動態綁定才是我們做這樣的聲明的意義。如果你確定是要創建一個Children對象,那自然可以像Children *p_children = new Children(xxx);這樣聲明和實例化對象,但實際上即使出現這樣的情況,我們也會習慣性地用父類去聲明,為的是提防以后可能會依舊會會發生的動態綁定。
2016-01-09 回復 有任何疑惑可以回復我~
#3

一二三兮 回復 Jabin_Aronvoy

"要讓p_children能夠使用Children的獨有方法,只需轉換回Children即可。" 請問如何轉換回Children?
2016-08-26 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消
C++遠征之多態篇
  • 參與學習       66224    人
  • 解答問題       334    個

本教程將帶領大家體會面向對象三大特性中的多態特性

進入課程

老師,為啥總是 使用父類對象實例化子類?實際應用中是不是子類對象實例化子類更好?

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

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

幫助反饋 APP下載

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

公眾號

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