zoukankan      html  css  js  c++  java
  • C++中的抽象基类示例

    抽象基类(abstract base class,ABC)
    例子:圆与椭圆。建立一个基类BaseEllipse,建立它的恋歌继承了Ellipse和Circle。
    ellipse.h

    #ifndef ELLIPSE_H_
    #define ELLIPSE_H_
    
    class BaseEllipse
    {
    public:
        virtual double Area() const =0;
    };
    
    class Ellipse : public BaseEllipse
    {
    private:
        double a, b;
    public:
        Ellipse(double a, double b) : a(a), b(b) {}
        virtual double Area() const;
    };
    
    class Circle : public BaseEllipse
    {
    private:
        double r;
    public:
        Circle(double r) : r(r) { }
        virtual double Area() const;
    };
    
    #endif // ELLIPSE_H_

    ellipse.cpp

    #include "ellipse.h"
    
    double Ellipse::Area() const
    {
        return 3.14159 * a * b;
    }
    
    double Circle::Area() const
    {
        return 3.14159 * r * r;
    }

    测试类

    #include <iostream>
    #include "ellipse.h"
    
    int main()
    {
        using std::cout;
        using std::endl;
        double a = 1.0, b = 2.0, r = 3.0;
        Ellipse * ellipse = new Ellipse(a, b);
        cout << ellipse->Area() << endl;
        Circle * circle = new Circle(r);
        cout << circle->Area() << endl;
        return 0;
    }

    输出效果:

    6.28318
    28.2743
  • 相关阅读:
    接口
    多态
    static的用法
    Person类中多个构造方法和测试
    曹操外卖实现功能
    曹操外卖数据表设计
    java中 try catch finally和return联合使用时,代码执行顺序的小细节
    GenerationType四中类型
    spring boot
    VMware修改为静态ip
  • 原文地址:https://www.cnblogs.com/moonlightpoet/p/5664577.html
Copyright © 2011-2022 走看看