第二题代码如下:
#include <iostream>
#include <cmath>
using namespace std;
class Shape {
public:
virtual double getArea() = 0;
};
class Triangle : public Shape {
private:
double a, b, c;
public:
Triangle(double _a, double _b, double _c) : a(_a), b(_b), c(_c) {}
double getArea() {
double p = (a + b + c) / 2;
return sqrt(p * (p - a) * (p - b) * (p - c));
}
};
class Square : public Shape {
private:
double side;
public:
Square(double _side) : side(_side) {}
double getArea() {
return side * side;
}
};
class Circle : public Shape {
private:
double radius;
public:
Circle(double _radius) : radius(_radius) {}
double getArea() {
return M_PI * radius * radius;
}
};
int main() {
Shape *s1 = new Triangle(3, 4, 5);
Shape *s2 = new Square(2);
Shape *s3 = new Circle(1);
cout << "三角形面积:" << s1->getArea() << endl;
cout << "正方形面积:" << s2->getArea() << endl;
cout << "圆形面积:" << s3->getArea() << endl;
delete s1;
delete s2;
delete s3;
return 0;
}