C C 程式設計 抽象類基礎實現

2021-10-08 19:43:34 字數 4330 閱讀 2611

/** * 抽象形狀類

*/class

abstractshape

;#endif

//share_abstractshape_h

abstractshape.cpp

//

// created by oceanstar on 2020/8/3.

//#include

"abstractshape.h"

abstractshape::

abstractshape

(int edge)

int abstractshape::

getedge()

rectangle.h

//

// created by oceanstar on 2020/8/3.

//#ifndef share_rectangle_h

#define share_rectangle_h

#include

"abstractshape.h"

/** * 矩形類,繼承自形狀類

*/class

rectangle

:public abstractshape

;#endif

//share_rectangle_h

rectangle.cpp

//

// created by oceanstar on 2020/8/3.

//#include

#include

"rectangle.h"

rectangle::

rectangle

(int bottom,

int height)

:abstractshape(4

)int rectangle::

calcarea()

void rectangle::

uniquefunc()

********.h

//

// created by oceanstar on 2020/8/3.

//#include

"abstractshape.h"

#ifndef share_********_h

#define share_********_h

class

********

:public abstractshape

;#endif

//share_********_h

********.cpp

//

// created by oceanstar on 2020/8/3.

//#include

"********.h"

********::

********

(int bottom,

int height)

:abstractshape(3

)int ********::

calcarea()

main中使用:

******** ******** =

********(4

,5);

cout << ********.

getedge()

<<

",\t"

; cout << ********.

calcarea()

<< endl;

rectangle rectangle =

rectangle(4

,5);

cout << rectangle.

getedge()

<<

",\t"

; cout << rectangle.

calcarea()

<< endl;

rectangle.

uniquefunc()

;

//---------------上轉---------------------

abstractshape *pshape =

null

;//定義了乙個抽象類的指標,注意抽象類不能定義物件但是可以定義指標

pshape =

new********(4

,5);

//基類指標指向派生類的物件

cout << pshape-

>

getedge()

<<

",\t"

; cout << pshape-

>

calcarea()

<< endl;

delete pshape;

//釋放了ccirle物件所佔的記憶體,但是指標是沒有消失的,它現在就是乙個野指標,我們在使用之前必須對它賦值

pshape =

&rectangle;

//基類指標指向派生類的物件

cout << pshape-

>

getedge()

<<

",\t"

; cout << pshape-

>

calcarea()

<< endl;

// 可以看到,我們使用父類的指標呼叫同乙個函式,分別呼叫了這兩個派生類的對應函式,它根據指標指向的型別的不同來決定呼叫的方法。即使我們以後需要新增加幾個類,我們還是這種呼叫方法,這就是多型的巨大魅力。

//---------------上轉---------------------

abstractshape *pshape =

null

;//定義了乙個抽象類的指標,注意抽象類不能定義物件但是可以定義指標

rectangle *rectangle_bynew =

newrectangle(4

,5);

cout << rectangle_bynew-

>

getedge()

<<

",\t"

; cout << rectangle_bynew-

>

calcarea()

<< endl;

rectangle_bynew-

>

uniquefunc()

; pshape = rectangle_bynew;

cout << pshape-

>

getedge()

<<

",\t"

; cout << pshape-

>

calcarea()

<< endl;

delete rectangle_bynew;

abstractshape *pshape_1 =

newrectangle(4

,5);

rectangle *rectangle_cast =

dynamic_cast

>

(pshape_1);if

(rectangle_cast !=

nullptr

)

等待:

C C 抽象類及其方法

一 解釋1 在c 中使用關鍵字 abstract 來定義抽象類和抽象方法。不能初始化的類被叫做抽象類,它們只提供部分實現,但是另乙個類可以繼承它並且能建立它們 的例項。乙個包含乙個或多個純虛函式的類叫抽象類,抽象類不能被例項化,進一步 乙個抽象類只能通過介面和作為其它類的基類使用.c program...

C 基礎 抽象類

下面,我們舉乙個完整的例子 例11 22 include class cpolygon virtual int area void 0 class crectangle public cpolygon class c public cpolygon int main 本程式計算本輸出矩形和三角形的面...

Java基礎 抽象類

抽象類 目前存在的問題 1.動物類的run方法描述的不正確。2.沒有強制要子類一定要重寫run方法 抽象類的應用場景 我們在描述一類事物的時候,發現這種事物確實存在某種行為,但是這種行為目前是不具體的,那麼我們可以抽取這種行為的宣告,但是不去實現這種行為,這種時候這種行為我們稱作為抽象行為,我們就需...