C++_类和对象_C++多态_案例2_制作饮品---C++语言工作笔记073
Posted credream
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++_类和对象_C++多态_案例2_制作饮品---C++语言工作笔记073相关的知识,希望对你有一定的参考价值。
然后我们再去看一个使用多态的案例,可以看到我们需要写一个制作饮品的父类,有公共的纯抽象方法,这个制作饮品的父类做为一个抽象类,然后子类我们有咖啡,有茶...
然后我们去做,可以看到,我们有个抽象的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的,饮品,然后我们执行去看效果
可以看到没问题对吧.
以上是关于C++_类和对象_C++多态_案例2_制作饮品---C++语言工作笔记073的主要内容,如果未能解决你的问题,请参考以下文章