一道C++题(抽象类,继承,派生,数组),求高手解答,急急急!

2024-10-28 21:31:57
推荐回答(1个)
回答1:

刚写的,全部代码如下:

 

#include  

using namespace std;

const double PI = 3.1415926;//π值

//基类Shap

class Shape

{

public:

 //纯虚函数GetArea

 virtual double GetArea() = 0;

};

 

//Circle类

class Circle:public Shape

{

public:

 Circle(){m_dbRadius = 1;};//构造

 ~Circle(){};

 inline double GetArea(){return PI * m_dbRadius * m_dbRadius;};//计算圆面积

 inline void SetRadius(double dbVal){m_dbRadius = dbVal;};//设置半径

 inline void GetRadius(double &dbVal){dbVal = m_dbRadius;};//获取半径

 

private:

 double m_dbRadius;//半径

};

 

 

//Rectangel类

class Rectangel:public Shape

{

public:

 Rectangel(){m_dbLength = 1;m_dbWidth = 1;};//构造

 ~Rectangel(){};

 inline double GetArea(){return m_dbLength * m_dbWidth;};//计算长方形面积

 //设置长和宽

 inline void SetLenAndWidth(double dbLength, double dbWidth){m_dbLength = dbLength; m_dbWidth = dbWidth;};

 //获取长和宽

 inline void GetLenAndWidth(double &dbLength, double &dbWidth){dbLength = m_dbLength; dbWidth = m_dbWidth;};

 

private:

 double m_dbLength;//长

 double m_dbWidth;//宽

 

};

 

int main()

 double dbRadius,dbLength,dbWidth;

 Shape *pBase[2];//基类指针数组

 Circle objCircle;//圆

 objCircle.SetRadius(2);//设置半径为2

 Rectangel objRectangel;//长方形

 objRectangel.SetLenAndWidth(2, 3);//设置长为2,宽为3

 

 objCircle.GetRadius(dbRadius);//获取半径

 objRectangel.GetLenAndWidth(dbLength, dbWidth);//获取长和宽

 pBase[0] = &objCircle;//第一个元素指向Circle类

 cout<<"半径为 "<GetArea()<

 pBase[1] = &objRectangel;//第二个元素指向Rectangel类

 cout<<"长为 "<GetArea()<

 

 

 return 0;

}

 

运行截图: