优秀的编程知识分享平台

网站首页 > 技术文章 正文

C++_类和对象_C++多态_案例2_制作饮品---C++语言工作笔记073

nanyue 2024-07-25 06:03:24 技术文章 21 ℃


?


然后我们再去看一个使用多态的案例,可以看到我们需要写一个制作饮品的父类,有公共的纯抽象方法,这个制作饮品的父类做为一个抽象类,然后子类我们有咖啡,有茶...


?


然后我们去做,可以看到,我们有个抽象的drinking这个类,里面有纯虚函数,煮水,冲泡,纯虚函数


?


然后有导入杯中,有加入辅料纯虚函数.


?


然后我们在这个抽象类中再提供一个,制作饮品的方法


在方法中,我们调用,上面我们写好的制作饮品的流程的,纯虚函数就可以了


?


然后我们去写一个Coffee这个子类去,可以看到,这个子类Coffee继承了,父类抽象的制作饮品这个类.


?


然后,我们在Coffee这个咖啡的子类中去,实现父类中的纯虚函数.


?


把父类中的所有的纯虚函数都重写就可以了


?


上面已经把Coffee子类的,所有代码都帖上了.


?


然后我们再来写一个制作茶叶的子类


Tea,也是继承制作饮品的父类抽象类,然后


也是去分别实现父类中的纯虚函数.


?


这样我们的两个子类就已经写完了


?


然后我们去测试,首先去写一个doWork这个方法,可以看到参数是,传入一个


父类的指针,AbstractDrinking * abs


然后,我们写一个test01,方法,然后调用doWork并且传入一个new Coffee对象,


要注意这里,new Coffee用new关键字,这样写的话,因为是在堆区创建的对象,所以


回返回一个指针,正好,doWork函数,也需要一个指针参数.


?


在main函数中调用,test01测试方法以后,执行看结果.


可以看到没问题,这样我们就通过代码,制作出了一杯咖啡.


?


这里还要注意,因为我们这里调用doWork函数的时候,


传入参数用的是new关键字,在堆区创建的对象,所以这里,用完堆区的对象以后,要记得使用delete abs;


delete 后面加指针,去清空指针对应的堆区空间.


而且上面我没有添加,最好,再添加一句,


abs = NULL; 防止空指针异常.


?


然后上面我们又创建了一个tea的,饮品,然后我们执行去看效果


可以看到没问题对吧.












?

Tags:

最近发表
标签列表