6-1 Shape抽象类 (30分)
已知抽象类类Shape定义如下,其中两个纯虚函数分别为计算面积getArea()和计算周长getPerim()。请通过Shape类派生出矩形类Rectangle和圆类Circle,计算各自的面积和周长,并能够按照main函数给出的测试代码完成给定的输入。
Shape类定义及测试程序如下:
#include <iostream> using namespace std; const double PI=3.14; class Shape { public: virtual double getArea()=0; virtual double getPerim()=0; }; /*请在这里输入你的代码*/ int main(){ double r,l,w; cin>>r; cin>>l>>w; Shape *p=NULL; p=new Circle(r); print(p);//输出圆面积与周长 p=new Rectangle(l,w); print(p);//输出矩形面积与周长 return 0; }代码实例:
class Circle:public Shape { private: double r; public: Circle(double r_):r(r_) { } double getArea(){ return 3.14*r*r; } double getPerim(){ return 2*3.14*r; } }; class Rectangle:public Shape//基本上的继承,析构函数,虚构函数 { private: double a,b; public: Rectangle(double a_,double b_):a(a_),b(b_) { } double getArea() { return a*b; } double getPerim() { return 2*(a+b); } }; void print(Shape *p)//print不是类的成员函数,算是一个全局函数,这里注意 { cout<<"Area:"<<p->getArea()<<endl<<"Perimeter:"<<p->getPerim()<<endl; }