题目
利用虚函数实现的多态性来求四种几何图形的面积之和。这四种几何图形是:三角形 (Triangle)、矩形(Rectangle)、正方形 (Square) 和圆 (Circle)。几何图形的类型可以通过构造函数或通过成员函数来设置。
相关阅读
完整代码
#include<bits/stdc++.h>
using namespace std;
class Shape{
public:
virtual void set()=0;
virtual double getArea()=0;
};
class Triangle: public Shape{
double a, b, c;
public:
virtual void set(){
cin >> a >> b >> c;
}
virtual double getArea(){
double p = (a+b+c)/2;
cout << "Triangle area: " << sqrt(p*(p-a)*(p-b)*(p-c)) << endl;
return sqrt(p*(p-a)*(p-b)*(p-c));
}
};
class Rectangle: public Shape{
double a, b;
public:
virtual void set(){
cin >> a >> b;
}
virtual double getArea(){
cout << "Rectangle area: " << a*b << endl;
return a*b;
}
};
class Square: public Shape{
double a;
public:
void set(){
cin >> a;
}
double getArea(){
cout << "Square area: " << a*a << endl;
return a*a;
}
};
class Circle: public Shape{
double const pi = 3.14;
double radius;
public:
void set(){
cin >> radius;
}
double getArea(){
cout << "Circle area: " << pi*radius*radius << endl;
return pi*radius*radius;
}
};
int main(){
Square square;
Rectangle rectangle;
Triangle triangle;
Circle circle;
Shape *s[4] = {&square, &rectangle, &triangle, &circle};
double sum;
for (int i = 0; i < 4; i++) {
s[i]->set();
sum += s[i]->getArea();
}
cout << "The sum area: " << sum << endl;
}