C C 中抽象類詳解及其作用介紹

2022-09-24 15:42:22 字數 1975 閱讀 6028

目錄

抽象類 (abstract class), 是一些不用來定義物件程式設計客棧, 而只作為基類被繼承的類. 由於抽象類常用作基類, 所以通常稱為抽象基類 (abstract base class).

定義抽象類的唯一目的, 就是去建立派生類. 我們在抽象類基礎上要定義出功能各異的派生類, 再用這些派生類去建立物件.

凡是包含純虛函式的類都是抽象類. 純虛函式不用實現, 故不能被呼叫, 抽象類無法建立物件. 抽象類的作用是作為乙個類簇的共同基類, 即為乙個類簇提供乙個公共介面.

許多好的物件導向的系統, 其層次結構的頂部是乙個抽象類, 甚至頂部有好幾層都是抽象類. 如果在抽象類所派生出的新類中對基類的所有純虛數進gdtxzc行了定義. 那麼這些函式就被賦予了具體的功能, 可以被呼叫. 這個派生類就不是抽象類, 而是可以用來定義物件的具體類 (concr程式設計客棧ete class).

如果在派生類中每有對所有純函式進行定義, 則此派生類仍然是抽象類, 不能用來定義物件.

建立基類 shape (形狀), 作為抽象類. point (點), circle (園) 是 shape 類的直接派生類和間接派生類, cylinder (圓柱體) 是 shape 的間接派生類.

shape 類:

#ifndef project6_shape_h

#define project6_shape_h

class shape

virtual double volume() const

virtual void shapename() const = 0;

};#endif //project6_shape_h

point:

#ifndef project6_point_h

#define project6_point_h

#include

#include "shape.h"

using namespace std;

class point : public shape;

virtual void shapename() const ;

virtual void shapename() const

};#endif //project6_circle_h

cylinder 類:

#ifndef project6_cylinde程式設計客棧r_h

#define project6_cylinder_h

#include

#include "circle.h"

using namespace std;

class cylinder : public circle;

virtual void shapename() const

};#endif //project6_cylinder_h

main:

#include

#include "shape.h"

#include "point.h"

#include "circle.h"

#include "cylinder.h"

using namespace std;

int main()

輸出結果:

this is point with a = 1.2 b = 2.3

this is circle with r = 2.5

this is circle with r = 3.5 h = 7

this is point with a = 1.2 b = 2.3

this is circle with r = 2.5

this is circle with r = 3.5 h = 7

雖然說抽象類不能定義物件, 但是可以定義指向抽象類資料的指標變數. 當派生類稱為具體類之後, 就可以用這種指標指向派生類物件. 然後通過該指標呼叫虛函式, 實現多型性的操作.

抽象類介面是物件導向程式設計中的核心概念, 是各種設計模式中必需的機制.

gdtxzc

C C 抽象類及其方法

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

C C 中組合詳解及其作用介紹

目錄 組合 composition 指在乙個類中另一類的物件作為資料成員.在平面上兩點連成一條直線,求直線的長度和直線中點的座標.要求 dot 類 ifndef project5 dot h define project5 dot h include using namespace std clas...

C C 中虛函式詳解及其作用介紹

目錄 虛函式 virtual function 指可以被子類繼承和覆蓋的函式.基類宣告成員函式為虛函式的方法 virtual 型別 函式名 參數列列 注 在類外定義虛函式時,不需再加 virtual.虛函式的特點 通過關聯 binding 我們可以把乙個識別符號和乙個儲存位址聯絡起來,或者把乙個函式...