结构推理
定义一个Shape类为抽象类,其中定义一个求面积的纯虚函数,从它派生出三角形(triangle)、矩形(rectangle)、圆(circle)三个子类,每个子类有各自不同的计算面积的公式:三角形(底*高*0.5)、矩形(长*宽)、圆(3.14*R*R)。写一个计算不同几何图形总面积的函数,并在main()函数中定义几个子类对象以验证该函数。
【正确答案】A:shape.h头文件
class shape{
public:
shape(){cout<<"Shape this->"<
#include "shape.h"
float total(shape *s[],int n)
{
float sum=0;
for(int i=0;iarea();
return sum;
}
class triangle:virtual public shape{
protected:
float H,W;
public:
triangle(float h,float w){H=h;W=w;}
float area(){return H*W*0.5;}
};
class rectangle:virtual public triangle{
public:
rectangle(float h,float w):triangle(h,w){}
float area(){return H*W;}
};
class circle:virtual public shape{
protected:
float radius;
public:
circle(float r){radius=r;}
float area(){return radius*radius*3.14;}
};
void main()
{
shape *s[4];
s[0]=new triangle(3.0,4.0);
s[1]=new rectangle(2.0,4.0);
s[2]=new circle(5.0);
s[3]=new circle(8.0);
float sum=total(s,4);
cout<<"Sum="<
【答案解析】