抽象基類定義
回答
通過從C++標準(第10.4節,抽象類,重點煤礦)定義:
一種抽象類是可以只用作基類的一些其他的類類;除了作爲從其派生的類的子對象之外,不能創建類的抽象對象 。一個類是抽象的,如果它有至少 一個純虛函數。 [注意:這樣的功能可能會被繼承:見下文。 末端音符]
class point {/.../}; class shape { // abstract class point center; public: point where() { return center; } void move(point p) { center=p; draw(); } virtual void rotate(int) = 0; // pure virtual virtual void draw() = 0; // pure virtual };
在該示例中,shape
包含兩個純虛擬方法(這使得它一個抽象類),但也包含兩個非虛擬方法。那沒問題。所以你的原始定義是抽象類包含只有純虛函數過於狹隘。至少有一個這樣的就足夠了。
謝謝你......我在某處閱讀了這個定義,感到非常困惑。 – 2015-01-31 23:04:10
@KaushikReddy這裏有一些像這樣的定義:它們起源於更多關於編程的人,而不是自己做的事。對於抽象思維的學術來說,抽象類不是真正抽象的,除非沒有非抽象的部分(我應該知道,我是一個學者...... ;-))但是如果你問到C++的定義,語言標準是規範性的。 – cmaster 2015-01-31 23:39:37
- 1. 抽象基類的抽象子類
- 2. 抽象基類有抽象嵌套類
- 3. 如何定義抽象類
- 4. 在抽象類定義
- 5. 大抽象基類
- 6. 抽象基類QPointer
- 7. quartz.net抽象基類
- 8. 抽象基類或類?
- 9. 未定義類實現抽象類
- 10. 定義抽象基類的默認構造函數
- 11. 將抽象基類中的自定義ICloneable實現
- 12. 自定義管理器 - 抽象基類的查詢
- 13. 如何在C++中的抽象基類和派生類中定義基類的虛函數定義?
- 14. RhinoMocks和抽象基類
- 15. Django:查詢抽象基類
- 16. C++使用抽象基類
- 17. Autofac解決抽象基類
- 18. @classmethod與抽象基類
- 19. Django的:基於抽象類
- 20. 如何從抽象基類
- 21. 抽象基類擴展
- 22. 抽象基類實現
- 23. 抽象基類益智
- 24. 抽象類定義觀察者接口
- 25. 自定義註釋的抽象類
- 26. NSCoder「只定義抽象類」的災難
- 27. 如何定義兩個抽象類
- 28. 構造基類抽象類的子類
- 29. 教義實體抽象類
- 30. mvc發佈類基於關抽象類
「包含至少一個純虛擬方法」將是一個更好的定義。 – juanchopanza 2015-01-31 22:58:23
如果類至少包含一個純虛擬方法,則該類是抽象的。它可以包含其他方法 - 純虛擬,虛擬和/或非虛擬。 – 2015-01-31 22:58:49
只有純虛擬類(沒有其他方法或數據成員)的類通常稱爲接口。抽象類也是一個可以具有常規功能的接口。由於純虛函數,兩種類型都不能實例化。 – 2015-01-31 23:00:28