當你要建立幾個類,分別表示矩形,圓形,橢圓形等圖形時,每乙個類都會去實現獲取面積(getarea()),繪製(draw())等通用介面,因此想到了繼承。
我們可以定義乙個形狀類shape,但是shape並不是乙個實體,僅僅是抽象出來的概念,您也不想去建立shape的物件,僅僅為了預定義同類的介面而已。
此時就需要用到純虛函式,shape也被稱為抽象資料型別adt(abstract data type)。
如果子類繼承自adt類,子類必須實現基類的所有純虛函式。
class shape
; virtual ~shape(){};
virtual void draw() = 0; //子類必須實現該方法
virtual void getarea() = 0;//子類必須實現該方法
private:
};class rectangle : public shape
; ~rectangle(){};
void draw()
void getarea()
private:
};class circle : public shape
; ~circle(){};
void draw()
void getarea()
private:
};int _tmain(int argc, _tchar* argv)
多型,虛函式,純虛函式,抽象類
c 中,實現多型有以下方法 虛函式,抽象類,過載,覆蓋 多型性在object pascal和c 中都是通過虛函式 virtual function 實現的。這麼一大堆名詞,實際上就圍繞一件事展開,就是多型,其他三個名詞都是為實現c 的多型機制而提出的一些規則,下面分兩部分介紹,第一部分介紹 多型 第...
多型性(純虛函式與抽象類)
將乙個虛函式初始化為0之後,該函式就變成了純虛函式。如 viurtual double area 0 這個虛函式是無任何的功能,不能直接來呼叫,因為它是抽象的,只有被子類繼承並賦予功能後才可呼叫。乙個類可以有多個純虛函式,但是只要有乙個純虛函式給類就是抽象類。抽象類只是乙個概念,就如同人類一樣,沒有...
C 練習 多型 純虛函式與抽象類
純虛函式與抽象類 含有純虛函式的類,稱為抽象基類,不可實列化。即不能建立物件,存在的意義就是被繼承,提供族類的公共介面。1 純虛函式與抽象類 23 include 4 5using namespace std 67 class shape 1112 class cfx public shape 18...