#include
#include
using namespace std;
class shape
{
public:
virtual float area() const=0;
};
class circle:public shape
{
public:
circle(float r)
{
radius=r;
}
virtual float area() const
{
return 3.14159*radius*radius;
}
protected:
float radius;
};
class rectangle:public circle
{
public:
rectangle(float r,float l,float w,float h):circle(r)
{
length=l;
width=w;
height=h;
}
virtual float area()
{
return length*width*height;
}
protected:
float length;
float width;
float height;
};
class triangle:public rectangle
{
public:
triangle(float r,float l,float w,float h,float a1,float b1,float c1):rectangle(l,w,h,r)
{
a=a1;
b=b1;
c=c1;
}
virtual float area() const
{
return sqrt(((a+b+c)/2)*(((a+b+c)/2)-a)*(((a+b+c)/2)-b)*(((a+b+c)/2)-c));
}
protected:
float a;
float b;
float c;
};
int main()
{
circle c(2);
rectangle re(1,1,1,1);
triangle t(2,4,4,5,3,4,5);
circle *p=&c;
cout<area()<
p=&re;
coutarea()<
p=&t;
coutarea()<<endl;
return 0;
}
程序可以运行 但是对象c和对象re调用的display()函数为什么是同一个 ?求大神帮助啊