如何编写程序,实现由定义抽象基类Shape(形状)派生出三个派生类?

2024-10-29 17:23:58
推荐回答(1个)
回答(1):

定义抽象基类Shape,由它派生出3个派生类: Circle(圆形)、Rectangle(矩形)、Triangle(三角形),用一个函数printArea分别输出以上三者的面积,3个图形的数据在定义对象时给定。

#include  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派生出的类将根据派生类的具体特征,使用常规虚函数来实现这种接口。