问题
定义一个基类Shape,然后派生出Rectangle和Circle类,之后Rectangle派生出Square类,他们都具有getArea()函数。计算对象的面积
#include<iostream>
using namespace std;
const float PI=3.14f;
class Shape
{
public:
Shape(){}
~Shape(){}
virtual float getarea(){return -1;}
};
class Rectangle:public Shape
{
private:
float l,w;
public:
Rectangle(float l,float w){
this->l=l;
this->w=w;
}
~Rectangle(){
cout<<"destructor function Rectangle"<<endl;
}
virtual float getarea(){
return l*w;
}
virtual float getlength(){
return l;
}
virtual float getwidth(){
return w;
}
};
class Circle:public Shape
{
private:
float r;
public:
Circle(float r){
this->r=r;
}
~Circle(){
cout<<"destructor circle"<<endl;
}
virtual float getarea()
{
return PI*r*r;
}
};
class Square:public Rectangle
{
public:
Square(int a):Rectangle(a,a){
}
};
int main()
{
Shape *s;
s=new Rectangle(2,3);
cout<<s->getarea()<<endl;
delete s;
s=new Circle(3);
cout<<s->getarea()<<endl;
delete s;
s=new Square(2);
cout<<s->getarea()<<endl;
delete s;
}
结果
6
28.26
4