美文网首页
C++继承练习5

C++继承练习5

作者: 科学旅行者 | 来源:发表于2016-12-14 15:56 被阅读24次

参考资料:《C++Primer习题集(第5版)》

目的:练习继承层次的构造。

#include <iostream>
#include <algorithm>
#include <string>
using namespace std;

class Figure {//公共基类, 表示几何图元;
    public:
        Figure() = default;//默认构造函数;
        Figure(double x, double y) : xSize(x), ySize(y) {}//构造函数;
        virtual ~Figure() = default;//虚析构函数;//解决动态绑定时的释放问题; 
    protected:
        double xSize, ySize;//图元的尺寸;
};

class Figure_2D : public Figure {//求平面图形的抽象基类;//该类也是Figure的派生类;
    public:
        Figure_2D(double x, double y) : Figure(x, y) {}//调用基类的构造函数;
        virtual double area() = 0;//求面积操作, 纯虚函数;
        virtual double perimeter() = 0;//求周长操作, 纯虚函数;       
};

class Figure_3D : public Figure {//求空间图形的抽象基类;//该类也是Figure的派生类;
    public:
        Figure_3D(double x, double y, double z) : Figure(x, y), zSize(z) {}//调用基类的构造函数;
        virtual double cubage() = 0;//求体积操作, 纯虚函数;
    protected:
        double zSize;//三维空间的z轴;
};

class Rectangle : public Figure_2D {//派生类, 矩形;
    public:
        Rectangle(double x, double y) : Figure_2D(x, y) {}//构造函数;
        virtual double area() override {//重写, 求矩形面积;
            return xSize * ySize;
        }
        virtual double perimeter() {//重写, 求矩形周长;
            return 2 * (xSize + ySize);
        }
};

class Circle : public Figure_2D {//派生类, 圆;
    public:
        Circle(double x, double y) : Figure_2D(x, y) {}//构造函数;
        virtual double area() override {//重写, 求圆面积;
            return 3.1415926 * xSize * xSize;//假定xSize = ySize = 圆的半径;
        }
        virtual double perimeter() {//重写, 求圆周长;
            return 2 * 3.1415926 * xSize;//假定xSize = ySize = 圆的半径;
        }
};

int main() {
    ios::sync_with_stdio(false);
    cin.tie(NULL);
    Rectangle *r = new Rectangle(4, 5);
    cout << r -> area() << endl;
    cout << r -> perimeter() << endl;
    Circle *c = new Circle(2, 2);
    cout << c -> area() << endl;
    cout << c -> perimeter() << endl;
    delete c;
    delete r;   
    return 0;
}
/*
20
18
12.5664
12.5664
*/

相关文章

  • C++继承练习5

    参考资料:《C++Primer习题集(第5版)》 目的:练习继承层次的构造。

  • C++继承练习2

    参考资料:《C++Primer(第5版 )》 练习目的:虚函数与作用域。

  • C++继承练习3

    参考资料:《C++Primer习题集(第5版)》 目的:理解每个print函数的机制。话说这感觉有点儿像打草稿。。。

  • C++继承练习4

    参考资料:《C++ Primer习题集(第5版)》 目的:练习虚函数的构造。Quote: 基类,提供基本的购书规则...

  • C++继承练习1

    参考资料:《C++Primer习题集(第5版)》 主要目的:熟悉虚函数、虚成员的定义,基类与派生类的关系。

  • Java 基础 - 继承

    参考 C++多继承有什么坏处,Java的接口为什么可以摈弃这些坏处?C++多继承(钻石继承)的问题和解决C++继承...

  • 第十三章 类继承(4)c++的三种继承方式

    (四)c++的三种继承方式 c++有三种继承方式,分别是公有继承,私有继承和保护继承。 (1)公有继承 这是最常用...

  • 8-C++远征之继承篇-学习笔记

    C++远征之继承篇 开篇介绍 整个C++远征计划: 起航->离港->封装->继承 为什么要用继承? 为什么要有继承...

  • JAVA核心技术总结(五六章)继承&接口与内部类

    第五章 继承 在Java中,所有的继承都是公有继承,没有C++的私有继承和保护继承 Java同C++一样,子类不能...

  • JNI基础 -- C++基础知识(继承多态,虚函数 )

    继承 在Java中类的继承只能是单继承,但是在C++中可以多继承。继承是通过一个冒号表示的,如下: C++中的继承...

网友评论

      本文标题:C++继承练习5

      本文链接:https://www.haomeiwen.com/subject/piwimttx.html