抽象基類定義
回答
通過從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
「包含至少一個純虛擬方法」將是一個更好的定義。 – juanchopanza 2015-01-31 22:58:23
如果類至少包含一個純虛擬方法,則該類是抽象的。它可以包含其他方法 - 純虛擬,虛擬和/或非虛擬。 – 2015-01-31 22:58:49
只有純虛擬類(沒有其他方法或數據成員)的類通常稱爲接口。抽象類也是一個可以具有常規功能的接口。由於純虛函數,兩種類型都不能實例化。 – 2015-01-31 23:00:28