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

Posted credream

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++_类和对象_C++多态_案例2_制作饮品---C++语言工作笔记073相关的知识,希望对你有一定的参考价值。

 

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

父类的指针,AbstractDrinking * abs

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

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

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

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

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

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

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

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

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

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

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

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

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

可以看到没问题对吧.

 

 

 

 



以上是关于C++_类和对象_C++多态_案例2_制作饮品---C++语言工作笔记073的主要内容,如果未能解决你的问题,请参考以下文章

C++__多态

C++__多态

c++_类和对象

c++_类和对象

第51课 继承对象模型分析——多态的本质分析

C++_多态(深入理解虚函数表)