#include <iostream>
using namespace std;

class Shape {
public:
    virtual double GetSurface() = 0; // 纯虚函数
    virtual double GetVolume() = 0;  // 纯虚函数
};

class Sphere : public Shape {
private:
    double radius;

public:
    Sphere(double r) {
        radius = r;
    }

    double GetSurface() {
        return 4 * 3.14 * radius * radius;
    }

    double GetVolume() {
        return 4.0 / 3.0 * 3.14 * radius * radius * radius;
    }
};

class Cube : public Shape {
private:
    double length;

public:
    Cube(double l) {
        length = l;
    }

    double GetSurface() {
        return 6 * length * length;
    }

    double GetVolume() {
        return length * length * length;
    }
};

int main() {
    Shape* s1 = new Sphere(2.0);
    Shape* s2 = new Cube(3.0);

    cout << "Sphere surface area: " << s1->GetSurface() << endl;
    cout << "Sphere volume: " << s1->GetVolume() << endl;
    cout << "Cube surface area: " << s2->GetSurface() << endl;
    cout << "Cube volume: " << s2->GetVolume() << endl;

    delete s1;
    delete s2;

    return 0;
}

原文地址: https://www.cveoy.top/t/topic/ovqv 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录