Shape抽象继承
#include<bits/stdc++.h>
using namespace std;
#define pi 3.14
class Shape{
private:
string name;
public:
Shape(const string& name): name(name){}
virtual double getS() const=0;
virtual double getC() const=0;
virtual void show() const{
cout<<name<<": "<<endl;
}
virtual ~Shape(){}
};
class Circle : public Shape{
private:
double radius;
public:
Circle(double radius) : Shape("Circle"), radius(radius){}
double getS() const override{
return pi*radius*radius;
}
double getC() const override{
return 2*pi*radius;
}
void show() const override{
Shape::show();
cout<<"area:"<<getS()<<endl;
cout<<"perimeter:"<<getC()<<endl;
}
~Circle(){}
};
class Square : public Shape{
private:
double a,b;
public:
Square(double a,double b) : Shape("Square"),a(a),b(b){}
double getS() const override{
return a*b;
}
double getC() const override{
return 2*(a+b);
}
void show() const override{
Shape::show();
cout<<"area:"<<getS()<<endl;
cout<<"perimeter:"<<getC()<<endl;
}
~Square(){}
};
int main(){
Shape* ptr[2];
ptr[0] = new Circle(2.5);
ptr[1] = new Square(4, 5.5);
ptr[0]->show();
ptr[1]->show();
delete ptr[0];
delete ptr[1];
return 0;
}