刚写的,全部代码如下:
#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<<"半径为 "<
pBase[1] = &objRectangel;//第二个元素指向Rectangel类
cout<<"长为 "<
return 0;
}
运行截图: