課程
/后端開發
/C++
/C++遠征之多態篇
在flymatch函數中為什么要傳入指針呢?
2016-01-08
源自:C++遠征之多態篇 3-6
正在回答
首先flymatch函數不僅可以傳入指針,還可以傳入實例化對象。
1、課程中為什么要傳入flyable指針呢,是基于基類的引用和指針可以引用子類的對象這一原則,也就是說flyable *p? 這個指針既可以引用bird也可以引用plan,這樣做的好處后面會說到。
2、那為什么不用flyable p 呢,是因為flyable是純虛函數,flyable p就是實例化一個flyable的對象p。顯而易見,純虛函數是不能被實例化的,所以flyable p 是非法的。
3、那可以傳入什么樣的實例化對象呢,bird和plan的實例化對象都可以。但是一旦這樣做了就會有一個限制,如果函數中聲明的是一個bird的對象,那么這個函數就不能再調用plan的對象了,因為bird和plan是兩個完全不同的類,所以函數只能接受bird的對象而不能接受plan的對象,就像一個人如果是男人,那么他肯定不可能是女人。如果想處理plan的對象,那么只能再創建另外一個函數來處理了。
4、事實都不是絕對的,人妖的出現證明了一個人即可以是男人也可以是女人,而flayable *p的出現呢,就是為了讓函數即可以調用bird的對象又可以調用plan的對象以及其它flyable的子類對象,這種編程靈活性是所有編程人員所崇尚的。
講解完畢,如果幫到你請給個好評吧!媳婦非得要那個慕課君抱枕,拼命賺積分ing。。。。。。
paopaonb 提問者
vortesnail
請問您說的是哪一課?傳入指針在某種情況下很方便
舉報
本教程將帶領大家體會面向對象三大特性中的多態特性
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網安備11010802030151號
購課補貼聯系客服咨詢優惠詳情
慕課網APP您的移動學習伙伴
掃描二維碼關注慕課網微信公眾號
2016-01-08
首先flymatch函數不僅可以傳入指針,還可以傳入實例化對象。
1、課程中為什么要傳入flyable指針呢,是基于基類的引用和指針可以引用子類的對象這一原則,也就是說flyable *p? 這個指針既可以引用bird也可以引用plan,這樣做的好處后面會說到。
2、那為什么不用flyable p 呢,是因為flyable是純虛函數,flyable p就是實例化一個flyable的對象p。顯而易見,純虛函數是不能被實例化的,所以flyable p 是非法的。
3、那可以傳入什么樣的實例化對象呢,bird和plan的實例化對象都可以。但是一旦這樣做了就會有一個限制,如果函數中聲明的是一個bird的對象,那么這個函數就不能再調用plan的對象了,因為bird和plan是兩個完全不同的類,所以函數只能接受bird的對象而不能接受plan的對象,就像一個人如果是男人,那么他肯定不可能是女人。如果想處理plan的對象,那么只能再創建另外一個函數來處理了。
4、事實都不是絕對的,人妖的出現證明了一個人即可以是男人也可以是女人,而flayable *p的出現呢,就是為了讓函數即可以調用bird的對象又可以調用plan的對象以及其它flyable的子類對象,這種編程靈活性是所有編程人員所崇尚的。
講解完畢,如果幫到你請給個好評吧!媳婦非得要那個慕課君抱枕,拼命賺積分ing。。。。。。
2016-01-08
請問您說的是哪一課?傳入指針在某種情況下很方便