#include<bits/stdc++.h>
using namespace std;
const int PI = 3.14159;
class Shape
{
public:
Shape(){}
virtual double getArea(){}
virtual double getPerim(){}
};
class Rectangle : public Shape
{
private:
double Wide, Long;
public:
Rectangle(){Wide = 0, Long = 0;}
Rectangle(double l, double w) : Wide(w), Long(l) {}
double getPerim()
{
return (Wide + Long) * 2;
}
double getArea()
{
return Wide * Long;
}
};
class Circle : public Shape
{
private:
double R;
public:
Circle(){R = 0;}
Circle(double r) : R(r) {}
double getPerim()
{
return R * 2;
}
double getArea()
{
return pow(R, 2) * PI;
}
};
int main()
{
Rectangle r(2.33, 2.33);
cout << r.getPerim() << " " << r.getArea() << endl;
Circle c(2.33);
cout << c.getPerim() << " " << c.getArea() << endl;
return 0;
}
应用vritual写虚函数时,要注意基类的虚函数要定义,不能只是声明。