C++抽象類


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 }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM