首页 > 其他分享 >纯虚函数与抽象类

纯虚函数与抽象类

时间:2024-03-22 22:13:48浏览次数:37  
标签:函数 void virtual 纯虚 抽象类 Boil

当类中有了纯虚函数,这个类也就是抽象类,

抽象类的特点:

   无法实例化对象

   子类必须重写抽象类中的纯虚函数,否则也属于抽象类

 

纯虚函数语法:  

virtual  返回值类型 函数名  (参数列表)=0

  

 

#include <iostream>

class AbstractDrink{
public:
    //煮水
    virtual void Boil()=0;
    
    //冲泡
    virtual void Brew()=0;

    //倒入杯中
    virtual void PourInCup()=0;

    //加入辅料
    virtual void PutSomething()=0; 

    //制作
    void makeDrink(){
        Boil();
        Brew();
        PourInCup();
        PutSomething();
    }
};


class Coffee:public AbstractDrink{
     virtual void Boil(){
        std::cout<<"煮农夫山泉"<<std::endl;
     };
    
    //冲泡
    virtual void Brew(){
        std::cout<<"冲泡"<<std::endl;
    };

    //倒入杯中
    virtual void PourInCup(){
        std::cout<<"倒入杯中"<<std::endl;
    };

    //加入辅料
    virtual void PutSomething(){
        std::cout<<"加入糖和牛奶"<<std::endl;
    }; 

};

class Tea:public AbstractDrink{
     virtual void Boil(){
        std::cout<<"煮矿泉水"<<std::endl;
     };
    
    //冲泡
    virtual void Brew(){
        std::cout<<"冲泡"<<std::endl;
    };

    //倒入杯中
    virtual void PourInCup(){
        std::cout<<"倒入杯中"<<std::endl;
    };

    //加入辅料
    virtual void PutSomething(){
        std::cout<<"加入枸杞"<<std::endl;
    }; 

};


//制作函数
void doWork(AbstractDrink *abs){
    abs->makeDrink();
    delete abs;
}

int main(){
    doWork(new Coffee);
}

  

标签:函数,void,virtual,纯虚,抽象类,Boil
From: https://www.cnblogs.com/gishuanhuan/p/18090494

相关文章

  • 函数 (XI) 开发手册和开发文档、函数(XII) 告阶函数【变得麻烦了】、54 永久存储
    查看刚才写的函数注释类型注释内省函数(XII)高阶函数高阶函数就是函数的参数也是函数,比如生成器那节课!高阶函数几乎就可以说是函数式编程的·灵魂所在·54永久存储......
  • 软件测试--设计函数实现输入日期显示星期几
    1.划分等价类:2.运用等价类划分法设计测试用例3.源程序代码1importjava.text.ParseException;2importjava.text.SimpleDateFormat;3importjava.util.Calendar;4importjava.util.Date;5importjava.util.Scanner;67publicclasstest1{8......
  • 字符函数与字符串函数
    目录1.字符分类函数1.1isupper函数1.2islower函数2. 字符转换函数3.strlen的使⽤和模拟实现4.strcpy的使⽤和模拟实现5.strcat的使⽤和模拟实现6. strcmp的使⽤和模拟实现7.strncpy函数的使⽤8.strncat函数的使⽤9.strncmp函数的使⽤10.strstr的使⽤和模拟......
  • 函数的详解
    目录1.函数的概念2.库函数2.1库函数的概念2.2 标准库和头文件2.3库函数的使用方法2.4 头文件包含2.5 库函数文档的一般格式3.自定义函数3.1函数的与法形式3.2函数举例4.实参和形参4.1实参4.2形参5.return语句6.嵌套调用和链式访问6.1嵌套调用......
  • C++ 指针,指针引用,二级指针作为实参传入函数体,形参改变指向的问题
    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录一、形参指向变化,实参指向不变二、指针引用传递改变实参指向三、二级指针**传递改变实参指向一、形参指向变化,实参指向不变前提了解:无论是值传递,指针传递,引用传递,形参和实参都是完全不同的......
  • [C++提高编程](一):模板----函数模板
    目录函数模板作用函数模板的语法注意事项普通函数与函数模板的区别普通函数与函数模板的调用规则模板的局限性案例--通用数组选择排序从大到小模板是C++中泛型编程的基础,一个模板就是一个创建类或函数的蓝图或者公式。函数模板作用建立一个通用函数,其函数返回值类型......
  • 吴恩达2022机器学习专项课程(一) 3.5 可视化成本函数
    问题预览为什么要可视化成本函数?可视化之后的成本函数是什么样子?如何在三维空间里通过w和b找到一个成本函数的值?如何在三维空间里找到成本函数的最小值?解读可视化成本函数:为了更加方便的看到不同的w和b,是如何影响成本函数的。上节课只看到了w如何影响成本函数,这节课回归......
  • Vue 的父组件和子组件生命周期钩子函数执行顺序?
    Vue的父组件和子组件生命周期钩子函数执行顺序可以归类为以下4部分:加载渲染过程父beforeCreate->父created->父beforeMount->子beforeCreate->子created->子beforeMount->子mounted->父mounted子组件更新过程父beforeUpdate->子beforeUpdat......
  • 开窗函数进阶last_value特别地方
    有了开窗函数,让我们做统计方便很多。row_number(),sum,等常规用法,便不在这里讲。我们从一个问题开始withabcas(select1asidunionallselect2unionallselect3unionallselect4)selectid,FIRST_VALUE(id)over(orderbyid)asfirstid,LAST_VALUE(id)o......
  • java:欧拉公式e^ix==cosx+i*sinx 用Math类中的方法输出90°以内的欧拉函数数值,保留四位
    publicclassMain{//本题的要求:e^ix==cosx+i*sinxdoubleb,c;chari;publicstaticvoidmain(String[]args){for(doublej=0;j<90;j++){//用循环依次整出0-90度doublesum=0;//temp是e^ix;doublea=j;a=Math.toRadi......