抽象方法 – C++快速入门24
抽象方法
让编程改变世界
Change the world by program
课前测试
- 该程序如何修改可以达到预期目的。
- 进阶自学:C++多态的实现原理
很多朋友觉得 C++ 难学,就像刚刚的文章,尼玛就坑爹,那么多概念,那么多文字,看完都不容易,要理解容易吗??!!
其实,小甲鱼觉得,既然是学以致用,我们就只需要掌握目前我们需要的。而那些看上去很深奥的概念,我们先放着就行了。。。。。。
抽象方法
抽象方法(abstract method,也可以成为纯虚函数)是面向对象编程技术的另一个核心概念,在设计一个多层次的类继承关系时常会用到。
把某个方法声明为一个抽象方法等于告诉编译器这个方法必不可少,但我现在(在这个基类里)还不能为它提供一个实现!
其实在之前我们已经见过一个应该被声明为抽象方法的好例子了,没错,就是 Pet::play() 方法。
为什么?
上一个例子中,现实中既不存在什么都玩的宠物,也不存在什么都能玩的游戏。
每种宠物都有它自己的玩法,而我们的应对措施是输出一条消息说宠物正在玩。
现在既然知道了抽象方法这个概念,我们就再也用不着编写那些不必要的代码了。
抽象方法的语法很简单:在声明一个虚方法的基础上,在原型的末尾加上”=0”。(告诉编译器不用浪费时间在这个类里寻找这个方法的实现!)
多态性
多态性是面向对象程序设计的重要特征之一。
简单的说,多态性是指用一个名字定义不同的函数,调用同一个名字的函数,却执行不同的操作,从而实现传说中的”一个接口,多种方法”!
多态是如何实现绑定的?
编译时的多态性:通过重载实现
运行时的多态性:通过虚函数实现
编译时的多态性特点是运行速度快,运行时的多态性特点是高度灵活和抽象。
析构函数解析
不久前,小甲鱼告诉大家析构器都是虚方法,大部分鱼油表示不解啊,有木有?!
从一个实例说起:ClsBase.cpp(程序源代码及课件下载)
栗子很简单,如果我们把类 ClxBase 析构函数前的 virtual 去掉,那输出结果就应该是:
Do something in class ClsDerived!
也就是说类 ClxDerived 的析构函数压根儿没有杯调用到!
一般下类的析构函数里面都是释放内存资源,而析构函数不被调用的话旧会造成内存泄露。
所以,析构器都是虚方法是为了当一个基类的指针删除一个派生类的对象时,派生类的析构函数可以被正确调用。
另外,当类里面有虚函数的时候,编译器会给类添加一个虚函数表,里边存放着虚函数指针。
为了节省资源,只有当一个类被用来作为基类的时候,我们才把析构函数写成虚函数!
备用视频下载
技术, IT技术, CPP, 视频教程
风险提示及免责条款
市场有风险,投资需谨慎。本文不构成个人投资建议,也未考虑到个别用户特殊的投资目标、财务状况或需要。用户应考虑本文中的任何意见、观点或结论是否符合其特定状况。据此投资,责任自负。本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处。如若内容有涉嫌抄袭侵权/违法违规/事实不符,请点击 举报 进行投诉反馈!
