1.純虛函數
形式:virtual 函數原型=0;
定義:在定義一個表達抽象概念的基類時,有時無法給出某些函數的具體實現方法,就可以將這些函數聲明為純虛函數。
特點:無具體實現方法。
2.抽象類
定義:聲明了純虛函數的類,都成為抽象類。
主要特點:抽象類只能作為基類來派生新類,不能聲明抽象類的對象。(既然都是一個抽象概念了,純虛函數沒有具體實現方法,故不能創造該類的實際的對象)
但是可以聲明指向抽象類的指針變量或引用變量,通過指針或引用,就可以指向並訪問派生類對象,進而訪問派生類的成員。(體現了多態性)
作用:因為其特點,基類只是用來繼承,可以作為一個接口,具體功能在派生類中實現(接口)
1 #include <iostream> 2 using namespace std; 3 //定義一個形狀抽象類 4 class Shape 5 { 6 protected: 7 double x; 8 double y; 9 public: 10 void set(double i, double j) 11 { 12 x = i; 13 y = j; 14 } 15 virtual void area() = 0; //定義純虛函數,用來某形狀計算面積 16 }; 17 //定義一個矩形類 18 class Rectangle :public Shape 19 { 20 //具體實現方法 21 void area() 22 { 23 cout << x * y << endl; //x和y為矩形的長和寬 24 } 25 }; 26 //定義一個直角三角型類 27 class Triangle :public Shape 28 { 29 //具體實現方法 30 void area() 31 { 32 cout << x * y * 0.5 << endl; //x和y為直角三角形的直角邊 33 } 34 }; 35 int main() 36 { 37 Rectangle rec; //定義一個矩形對象 38 Triangle tri; //定義一個直角三角型對象 39 40 Shape *p = &rec; //定義一個抽象類的指針p,並使它指向矩形對象 41 p->set(2, 4); //調用矩形類中的設置參數方法 42 p->area(); //調用矩形類中計算矩形面積的方法 43 44 p = &tri; //讓指針p指向直角三角形對象 45 p->set(2, 4); //調用直角三角形類中的設置參數方法 46 p->area(); //調用直角三角形類中計算面積的方法 47 system("pause"); 48 return 0; 49 }