• 2022-06-06
    编写程序,定义抽象基类Shape(形状),其中有一虚函数show()显示单个图形的面积,showTotal显示总面积。一个静态数据成员totalArea,存放派生的所有图形的面积。由它派生出2个派生类:Circle(圆形) 和Rectangle(矩形),要求显示所有图形的总面积
  • #include using namespace std; const double PI = 3.1415926; class Shape {public: Shape() { } virtual ~Shape() { } virtual Show() = 0; static double totalArea; static void ShowTotalArea() { cout << "总面积:" << totalArea << endl; } }; class Circle: public Shape {private: double radius; public: Circle(double r): radius(r) { totalArea += PI * r * r; } ~Circle() { } virtual Show() { cout << "圆面积:" << PI * radius * radius << endl; }; }; class Rectangle: public Shape {private: double length; double width; public: Rectangle(double l, double w): length(l), width(w){ totalArea += l * w; } ~Rectangle() { } virtual Show() { cout << "矩形面积:" << length * width << endl; }; }; double Shape::totalArea = 0; int main(void) { Circle c(1); c.Show(); Rectangle r(1, 2); r.Show(); Shape::ShowTotalArea(); return 0; }

    举一反三

    内容

    • 0

      定义一个 Shape 基类,在此基础上派生出 Rectangle 和Circle ,二者都有 GetArea() 函数计算对象的面积。使用Rectangle 类创建一个派生类 Square。

    • 1

      定义一个shape抽象类,派生出Rectangle类和Circle类,计算各派生类对象的面积Area().

    • 2

      任务:针对不同几何图形计算周长与面积1、创建Shape类,提供两个方法double perimeter() —— 计算图形周长double area() —— 计算图形面积2、创建矩形类Rectangle继承Shape类包含双精度的长宽属性:a和b3、创建圆形类Circle继承Shape类包含双精度的半径属性:r4、创建ShapeCalculation类,提供两个方法double getPerimter(Shape shape); ——计算图形周长double getArea(Shape shape); ——计算图形面积5、创建TestShapeCalculation类实例化ShapeCalculation对象输入矩形长与宽,计算其周长与面积输入圆半径,计算其周长和面积

    • 3

      定义一个Shape基类,在此基础上派生出Rectangle和Circle类,二者都有GetArea()函数计算对象的面积。通过屏幕提示请用户选择输入矩形长、宽,或者圆的半径,程序算出面积后输出到屏幕。

    • 4

      下列有关继承和派生的叙述中,不正确的是()。 A: 一个基类只能派生出一个派生类 B: 派生类可以继承到基类成员的基础上增加新的成员 C: 每一个派生类又可以作为基类再派生出新的派生类 D: 派生类继承了基类的所有数据成员和成员函数