用c++写一个程序,定义抽象基类Shape,由它派生出3个派生类: Circle(圆形)、Rectangle(矩形)、Triangle(三角形),用一个函数printArea分别输出以上三者的面积,3个图形的数据在定义对象时给定。
时间: 2023-07-15 17:14:52 浏览: 109
以下是用C++编写的程序,实现了定义抽象基类Shape,由它派生出3个派生类: Circle(圆形)、Rectangle(矩形)、Triangle(三角形),并用一个函数printArea分别输出以上三者的面积,3个图形的数据在定义对象时给定。
```cpp
#include<iostream>
using namespace std;
class Shape{
public:
virtual double area()=0; //纯虚函数,用于求面积
};
class Circle:public Shape{ //Circle类继承Shape
private:
double radius;
public:
Circle(double r):radius(r){}
double area(){ //重写Shape类的area()方法
return 3.1415926*radius*radius;
}
};
class Rectangle:public Shape{ //Rectangle类继承Shape
private:
double width, height;
public:
Rectangle(double w, double h):width(w),height(h){}
double area(){ //重写Shape类的area()方法
return width*height;
}
};
class Triangle:public Shape{ //Triangle类继承Shape
private:
double base, height;
public:
Triangle(double b, double h):base(b),height(h){}
double area(){ //重写Shape类的area()方法
return 0.5*base*height;
}
};
void printArea(Shape& s){ //打印面积
cout<<"面积为:"<<s.area()<<endl;
}
int main(){
Circle c(2.0);
Rectangle r(3.0,4.0);
Triangle t(2.0,3.0);
printArea(c);
printArea(r);
printArea(t);
return 0;
}
```
程序运行结果如下:
```
面积为:12.5664
面积为:12
面积为:3
```
阅读全文