目录
题目
源码
结果示例
题目
写一个程序,定义抽象基类Shape,由它派生出2个派生类:Circle(圆形)、Rectangle(矩形),用一个普通函数printarea分别输出以上二者的面积,2个图形的数据在定义对象时给定。
源码
#include <iostream>
#include <cmath>
using namespace std;
class Shape
{
public:
virtual void printarea() const = 0;
virtual ~Shape(){};
};
class Rectangle : public Shape
{
private:
double length;
double width;
public:
Rectangle(double l,double w) : length(l),width(w) {}
virtual void printarea() const { cout << "矩形的面积为:" << length * width << endl; }
};
class Circle : public Shape
{
private:
double radius;
public:
Circle(double r) : radius(r) {}
virtual void printarea() const { cout << "圆形的面积为:" << M_PI * radius * radius << endl; }
};
int main()
{
Rectangle r(5.0,4.0);
r.printarea();
Circle c(1.0);
c.printarea();
return 0;
}