• 纯虚函数,抽象类


    什么是纯虚函数?

    纯虚函数的声明有着特殊的语法格式:virtual 返回值类型成员函数名(参数表)=0;

    请注意,纯虚函数应该只有声明,没有具体的定义,即使给出了纯虚函数的定义也会被编译器忽略。

    什么是抽象类?
    包含纯虚函数的类就是抽象类。

    在C++中,我们可以把只能用于被继承而不能直接创建对象的类设置为抽象类(Abstract Class)。

    抽象类中至少存在一个纯虚函数;存在纯虚函数的类一定是抽象类。存在纯虚函数是成为抽象类的充要条件。

    抽象类作为基类只是用来继承,其功能在派生类中实现。

     那么我们仿照这个格式定义一个包含有虚函数的抽象类

    class Calculate
    {
    private:
        /* data */
    public:
        Calculate(/* args */);
        ~Calculate();
        virtual float result() = 0;
    float A;
        float B;
    };
    
    Calculate::Calculate(/* args */)
    {
    }
    
    Calculate::~Calculate()
    {
    }

    纯虚函数也不需要在基类中实现。

    现在我们定义几个子类,同时在子类里面实现刚才纯虚函数result()的功能

    class Add:public Calculate
    {
    private:
        /* data */
    public:
        float result();
    };
    
    float Add::result()
    {
        return A+B;
    }
    
    class Sub:public Calculate
    {
    private:
        /* data */
    public:
        float result();
    };
    
    float Sub::result()
    {
        return A-B;
    }
    
    class Multiply:public Calculate
    {
    private:
        /* data */
    public:
        float result();
    };
    
    float Multiply::result()
    {
        return A*B;
    }
    
    class Div:public Calculate
    {
    private:
        /* data */
    public:
        float result();
    };
    
    float Div::result()
    {
        return A/B;
    }

    在主函数中调用

    int main(int argc, char const *argv[])
    {
    
        Add jisuan1;
        jisuan1.A = 10;
        jisuan1.B = 2;
        cout<<jisuan1.result()<<endl;
    
        Sub jisuan2;
        jisuan2.A = 10;
        jisuan2.B = 2;
        cout<<jisuan2.result()<<endl;    
    
        Multiply jisuan3;
        jisuan3.A = 10;
        jisuan3.B = 2;
        cout<<jisuan3.result()<<endl;
    
    }

    输出结果如下

    12
    8
    20
  • 相关阅读:
    在局部场景中重新定位 Revit 数据
    MP.PDFDocumentCreate
    ArcGIS Pro在 ModelBuilder 中使用逻辑工具的示例 如果数据已存在
    【Arcpy学习实践教程】wgs84坐标系和火星坐标系的转换中demo的对与错
    ArcGIS Pro更新和修复数据源
    ArcGIS API for Python和ArcPy区别
    使用ArcGISPro操作multipatch数据(转)
    arcpy自动制图实战(arcpy.mapping迁移至arcpy.mp)(转)
    pro Camera
    arcgis pro ArcGISProject
  • 原文地址:https://www.cnblogs.com/qifeng1024/p/12642656.html
Copyright © 2020-2023  润新知