码迷,mamicode.com
首页 > 其他好文 > 详细

纯虚函数,抽象类

时间:2020-04-06 17:26:26      阅读:78      评论:0      收藏:0      [点我收藏+]

标签:抽象   res   char   data   设置   c++   主函数   cout   现在   

什么是纯虚函数?

纯虚函数的声明有着特殊的语法格式: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

 

纯虚函数,抽象类

标签:抽象   res   char   data   设置   c++   主函数   cout   现在   

原文地址:https://www.cnblogs.com/qifeng1024/p/12642656.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!