任何人都可以幫助我,當我必須使用基類和dervied類指針。何時使用派生類指針和基類指針
1
A
回答
0
當您有多個派生類。而且在編譯時你不知道哪個派生類將在運行時實例化。基類指針優於派生類指針。
0
當你想要使用派生類接口,或者當你想確保你正在處理這個特定的基類實現,或者當你想調用一個非虛函數時,使用派生類指針在派生類中定義。
在其他情況下,沒關係。
1
這取決於你爲什麼得到。如果它是用於OO實現的,大多數情況下,您將使用指向基類的指針( 通常通過抽象);如果派生類定義擴展接口,則只會使用派生類 的指針。但C++中的繼承是一種技術,並且它經常用於其他 的目的。 (想想一個迭代器類,它從 實例化std::iterator
繼承的,這是不OO派生和 you'ld從未使用指針的std::iterator
的實例。)
我會經常使區分,使用OO概念的「推導」,對C++技術使用「繼承」。但這絕不是標準,術語差別很大,所以你通常必須先找出作者正在談論的內容:OO設計或C++ 實現。而且有時你會意識到自己並不知道他自己;他在自己的想法中混淆了兩者。繼承 是用於實現面向對象派生的C++語言結構,但是這種語言結構可以用於其他事情。
0
當您有多個派生類但您想從派生類類型中抽象出自己時,將使用基類指針。這可以在這樣的情況下是例如非常有用:
class Animal {
Animal();
}
class Dog : public Animal {
Dog();
}
class Cat : public Animal {
Cat();
}
正如你看到的,在這個例子中,你有一個基類(動物)和兩個派生類(貓和犬)。現在讓我們說你正在運行一個動物園(只有貓和狗:)),並且你需要保留一個動物列表。你可以創建兩個單獨的列表,一個用於貓,另一個用於狗。然而,如果你認爲貓和狗只是動物,你可以創建一個指向動物的列表。
這樣,通過從派生類類型中抽象出自己,可以通過指向基類的簡單指針來處理不同的派生類。
派生類指針是完全不同的,因爲它們只能「表示」派生類的類型。
相關問題
- 1. 派生類的基指針
- 2. 派生類和基類之間指針指針的轉換?
- 3. 將指針基類轉換爲指向派生類的指針
- 4. C++ dynamic_cast基類指向派生類指針的指針
- 5. C++ - 基類指針,方法指針,引用派生類,方法?
- 6. 將基類指針轉換爲未知的派生類指針
- 7. C++派生類的劇組成員指針到基類指針
- 8. 無法從指針轉換爲基類指針指向派生
- 9. 指向基類數組的指針,使用派生類填充
- 10. 在目標c中指派派生類的基類指針
- 11. 我不能從指針指向派生類的指針和指向基類的指針嗎?
- 12. 通過基指針獲取派生類?
- 13. 比較指向基類型的指針與派生類型的指針
- 14. 如何調用通過基類指針基類方法指向派生類
- 15. 無法使用基類指針調用派生類函數
- 16. 派生類指針指向的函數
- 17. 指向派生類C++的指針
- 18. 傳承與融合 - 基類的指針指向派生類
- 19. 指向派生類的基類指針,範圍之外
- 20. 知道哪個派生類的基類指針指向
- 21. 使用派生類對象數組初始化基類指針
- 22. 使用基類指針到派生類對象
- 23. 爲什麼使用派生類的基類指針
- 24. 獲取基類的指針以使用派生類的函數
- 25. 使用派生類分配基類指針的內存
- 26. 函數和派生類的指針
- 27. 智能指針和派生類
- 28. 如何派生類指針可以調用基類函數
- 29. 基類指針vs繼承類指針?
- 30. 通過指針到基類的指針到派生類對象操作對象
Way.Too.Broad。如果您在理解這些問題時遇到問題,請在代碼示例中澄清。 – Xeo 2011-06-16 10:45:08