// 创建一个基类 Shape，其中包含一个纯虚函数 perimeter() ，用于计算形状的周长。从 Shape 派生出 Triangle 类和 Square 类，分别实现计算三角形和正方形的周长的函数。
#include <iostream>
#include <cstring>
#include <cstdlib>

using namespace std;

class Shape
{
public:
    // 用于计算形状的周长
    virtual double perimeter() = 0;
};

class Triangle : public Shape
{
private:
    double a, b, c;

public:
    Triangle(double a, double b, double c) : a(a), b(b), c(c) {}

public:
    double perimeter()
    {
        return a + b + c;
    }
};

class Square : public Shape
{
private:
    double a;

public:
    Square(double a) : a(a) {}

public:
    double perimeter()
    {
        return 4 * a;
    }
};

int main()
{
    Shape *p = new Triangle(3, 4, 5);

    cout << "三角形的周长是: " << p->perimeter() << endl;

    p = new Square(5);

    cout << "正方形的周长是: " << p->perimeter() << endl;
    return 0;
}
