抽象方法 – C++快速入门24

抽象方法

 

让编程改变世界

Change the world by program


 

课前测试

 

1. 该程序如何修改可以达到预期目的。

2. 进阶自学:C++多态的实现原理

 

很多朋友觉得 C++ 难学,就像刚刚的文章,尼玛就坑爹,那么多概念,那么多文字,看完都不容易,要理解容易吗??!!

其实,小甲鱼觉得,既然是学以致用,我们就只需要掌握目前我们需要的。而那些看上去很深奥的概念,我们先放着就行了。。。。。。

 

抽象方法

 

抽象方法(abstract method,也可以成为纯虚函数)是面向对象编程技术的另一个核心概念,在设计一个多层次的类继承关系时常会用到。

把某个方法声明为一个抽象方法等于告诉编译器这个方法必不可少,但我现在(在这个基类里)还不能为它提供一个实现!

其实在之前我们已经见过一个应该被声明为抽象方法的好例子了,没错,就是 Pet::play() 方法。

为什么?

 

上一个例子中,现实中既不存在什么都玩的宠物,也不存在什么都能玩的游戏。

每种宠物都有它自己的玩法,而我们的应对措施是输出一条消息说宠物正在玩。

现在既然知道了抽象方法这个概念,我们就再也用不着编写那些不必要的代码了。

抽象方法的语法很简单:在声明一个虚方法的基础上,在原型的末尾加上”=0”。(告诉编译器不用浪费时间在这个类里寻找这个方法的实现!)

 

多态性

 

多态性是面向对象程序设计的重要特征之一。

简单的说,多态性是指用一个名字定义不同的函数,调用同一个名字的函数,却执行不同的操作,从而实现传说中的”一个接口,多种方法”!

 

多态是如何实现绑定的?

 

编译时的多态性:通过重载实现

运行时的多态性:通过虚函数实现

编译时的多态性特点是运行速度快,运行时的多态性特点是高度灵活和抽象。

 

析构函数解析

 

不久前,小甲鱼告诉大家析构器都是虚方法,大部分鱼油表示不解啊,有木有?!

从一个实例说起:ClsBase.cpp(程序源代码及课件下载)

栗子很简单,如果我们把类 ClxBase 析构函数前的 virtual 去掉,那输出结果就应该是:

Do something in class ClsDerived!

 

也就是说类 ClxDerived 的析构函数压根儿没有杯调用到!

一般下类的析构函数里面都是释放内存资源,而析构函数不被调用的话旧会造成内存泄露。

 

所以,析构器都是虚方法是为了当一个基类的指针删除一个派生类的对象时,派生类的析构函数可以被正确调用。

另外,当类里面有虚函数的时候,编译器会给类添加一个虚函数表,里边存放着虚函数指针。

为了节省资源,只有当一个类被用来作为基类的时候,我们才把析构函数写成虚函数!

[buy] 获得所有教学视频、课件、源代码等资源打包 [/buy]
[Downlink href='http://urlxf.qq.com/?emY3eqe']视频下载[/Downlink]
[Downlink href='http://kuai.xunlei.com/d/LAOZBBZINIHY']备胎下载[/Downlink]

原文链接: https://www.cnblogs.com/LoveFishC/archive/2012/05/12/3847170.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

    抽象方法 - C++快速入门24

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/50056

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月9日 上午1:41
下一篇 2023年2月9日 上午1:41

相关推荐