定義抽象基類Shape,由它派生出3個派生類: Circle(圓形)、Rectangle(矩形)、Triangle(三角形),用壹個函數printArea分別輸出以上三者的面積,3個圖形的數據在定義對象時給定。
#include<iostream> ?using?namespace?std; ?class?Shape ?{ ? public: ?
virtual?float?printArea()?const?{return?0.0;}; }; ?class?Circle:public?Shape ?{ ?
public: ?Circle(float?=0); ? virtual?float?printArea()?const?{return?3.14159*radius*radius;} ?
protected: ?float?radius; }; ?Circle::Circle(float?r):radius(r) ?{ ?} ?class?Rectangle:public?Shape ?{ ?public: ? Rectangle(float?=0,float?=0); ?
virtual?float?printArea()?const; ?protected: ?float?height; ?float?width; ?}; ?
Rectangle::Rectangle(float?w,float?h):width(w),height(h){ ?} ?
float?Rectangle::printArea()const ?{ ?return?width*height; ?} ?
class?Triangle:public?Shape ?{ ? public: ?Triangle(float?=0,float?=0); ?
virtual?float?printArea()?const; ?protected: ?float?height; ?float?width; ?
抽象類(abstract base class,ABC)就是類裏定義了純虛成員函數的類。純虛函數 只提供了接口,並沒有具體實現。抽象類不能被實例化(不能創建對象),通常是作為基類供子類繼承,子類中重寫虛函數,實現具體的接口。簡言之,ABC描述的是至少使用壹個純虛函數的接口,從ABC派生出的類將根據派生類的具體特征,使用常規虛函數來實現這種接口。