下面Shape类是一个表示形状的抽象类,Area ( )为求图形面积的函数。请从Shape类派生梯形类(Trapezoid)、圆形类(Circle),三角形类(Triangle),并给出具体的求面积函数。其中,所有派生类计算面积需要用到的参数由构造函数给出,梯形面积计算需要上底、下底和高,三角形面积需要底和高,圆形面积需要半径。
形状的抽象类声明如下:
class Shape {
public:
virtual double Area( ) = 0;

下面Shape类是一个表示形状的抽象类,Area ( )为求图形面积的函数。请从Shape类派生梯形类(Trapezoid)、圆形类(Circle),三角形类(Triangle),并给出具体的求面积函数。其中,所有派生类计算面积需要用到的参数由构造函数给出,梯形面积计算需要上底、下底和高,三角形面积需要底和高,圆形面积需要半径。
形状的抽象类声明如下:
class Shape {
public:
virtual double Area( ) = 0;
};


【正确答案】:

CLASS CIRCLE:PUBLIC SHAPE
PUBLIC:
CIRCLE (DOUBLE R){RADIUS=R;}
DOUBLE AREA( )CONST{RETURN 3.1416*RADIUS*RADIUS;}
PRIVATE:
DOUBLE RADIUS;
};
CLASS TRAPEZOID :PUBLIC SHAPE
{
PUBLIC:
TRAPEZOID(DOUBLE TOP,DOUBLE BOTTOM,DOUBLE HIGH)
{
T=TOP;
B=BOTTOM;
H=HIGH;
}
DOUBLE AREA( )CONST
{
RETURN (T+B) *H*0.5;
}
PRIVATE:
DOUBLE T,B,H;
};
CLASS TRIANGLE:PUBLIC SHAPE
{
PUBLIC:
TRIANGLE(DOUBLE BOTTOM,DOUBLE HEIGHT)
{
B=BOTTOM;
H=HIGH;
}
DOUBLE AREA( )CONST
{
RETURN B*H*0.5;
}
PRIVATE:
DOUBLE T,B,H;
};


【题目解析】:

在C++语言中,从基类派生派生类的一般格式如下:
class派生类名: 继承方式说明符 基类名
{
类体
};

构造函数的函数名与类名相同,没有返回值。构造函数的声明格式如下:
类名(形参1, 形参2, …,形参n);

梯形面积=(上底+下底)*高/2

三角形面积=底*高/2

圆形面积=π*R*R


Top