C++面向对象编程:深入探索虚拟函数与多态性
需积分: 48 132 浏览量
更新于2024-08-10
收藏 4.41MB PDF 举报
"节详细介绍虚拟函数-算法设计 jon_kleinberg英文原版"
本资源主要探讨了C++中的类继承和子类型,特别是关于虚拟函数的使用和动态绑定的概念。在面向对象编程中,虚拟函数是实现多态性的重要机制。通过虚拟函数,程序员可以编写通用的代码,这些代码能够处理不同类的对象,即使这些类是在运行时才确定的。
在描述中,示例展示了如何使用基类指针调用派生类的方法。`eval()`函数接受不同类型的查询对象(如`AndQuery`, `NotQuery`, `OrQuery`, `NameQuery`),这些类型都从`Query`类派生。由于它们都是`Query`的子类,因此可以安全地使用基类指针调用`eval()`。如果尝试用非`Query`派生类的对象(如`string`)调用`eval()`,则会导致编译错误,因为`string`不是`Query`的子类。
在`eval()`函数内部,`pquery->eval();`的调用依赖于动态绑定。这意味着在运行时,会根据`pquery`实际指向的对象类型调用相应的`eval()`函数实例。这种机制使得在程序执行期间,即使`pquery`指向的对象类型在不断变化,也能正确地调用对应的成员函数。
C++中的多态性是通过基类指针或引用实现的,但并非所有指针或引用操作都会导致多态。例如,`int *pi`和`void *pvi`就不涉及多态,因为它们不包含类层次结构的信息。只有像`Query *pquery`这样的基类指针,才能指向任何`Query`派生类的对象,从而实现多态性。
在C++ Primer第三版中,作者深入讲解了C++语言的这一核心特性,帮助读者理解并掌握如何在实际编程中有效利用多态性和虚拟函数。书中涵盖了C++的最新标准,使得代码更易于移植,并且与C++标准库兼容,提供了一套全面的基础设施。通过学习,读者可以更深入地理解C++语言,不仅限于其作为C语言超集的传统认知。
2018-03-21 上传
2018-10-26 上传
2018-09-19 上传
2023-09-19 上传
2024-01-12 上传
2023-09-04 上传
2023-06-05 上传
2023-07-12 上传
2023-10-03 上传
![](https://profile-avatar.csdnimg.cn/478e3b52878d4ffc9f44048b6f3b0b6b_weixin_42204303.jpg!1)
花香九月
- 粉丝: 23
- 资源: 2万+
最新资源
- 解决本地连接丢失无法上网的问题
- BIOS报警声音解析:故障原因与解决方法
- 广义均值移动跟踪算法在视频目标跟踪中的应用研究
- C++Builder快捷键大全:高效编程的秘密武器
- 网页制作入门:常用代码详解
- TX2440A开发板网络远程监控系统移植教程:易搭建与通用解决方案
- WebLogic10虚拟内存配置详解与优化技巧
- C#网络编程深度解析:Socket基础与应用
- 掌握Struts1:Java MVC轻量级框架详解
- 20个必备CSS代码段提升Web开发效率
- CSS样式大全:字体、文本、列表样式详解
- Proteus元件库大全:从基础到高级组件
- 74HC08芯片:高速CMOS四输入与门详细资料
- C#获取当前路径的多种方法详解
- 修复MySQL乱码问题:设置字符集为GB2312
- C语言的诞生与演进:从汇编到系统编程的革命