多态性12

发布时间 2023-04-21 19:31:19作者: Misa先生

#include<iostream>

#define PI 3.14

using namespace std;

class Shape

{

public:

    Shape(){cout<<"shape构造"<<endl;}

    virtual double getArea()=0;

    virtual double getPerim()=0;

    ~Shape(){cout<<"shape析构"<<endl;}

};

class Rectangle:public Shape

{

public:

    Rectangle(double h,double w):height(h),weight(w){cout<<"rectangle 构造"<<endl;}

    double getArea(){return height*weight;}

    double getPerim(){return 2*(height+weight);}

    ~Rectangle(){cout<<"rectangle 析构"<<endl;}

private:

    double height;

    double weight;

};

class Circle:public Shape

{

public:

    Circle(double r):radius(r){cout<<"Circle 构造"<<endl;}

    double getArea(){return PI*radius*radius;}

    double getPerim(){return 2*PI*radius;}

    ~Circle(){cout<<"Circle 析构"<<endl;}

private:

    double radius;

};

int main()

{

    Rectangle r(3.0,2.0);

    cout<<"矩形面积为:"<<r.getArea();

    cout<<"   矩形周长为:"<<r.getPerim()<<endl;

    Circle c(4.0);

    cout<<"圆的面积为:"<<c.getArea();

    cout<<"   圆的周长为:"<<c.getPerim()<<endl;

    return 0;

}