派生一个类的原因并非总是为了继承或是添加新的成员,有时是为了重新定义基类的成员,使得基类成员“获得新生”。面向对象的程序设计真正的力量不仅仅是继承,而且还在于允许派生类对象像基类对象一样处理,其核心机制就是多态和动态联编。 (一)多态性 多态是指同样的消息被不同的对象接收时导致不同的行为。所谓消息是指对类成员函数的调用,不同的行为是指的不同的实现,也就是调用了不同的函数。 1)多态的分类 广义上说,多态性是指一段程序能够处理多种类型对象的能力。在C++中,这种多态性可以通过重载多态(函数和运算符重载),强制重载(类型强制转换),类型参数化多态(模板) ,包含多态(继承与虚函数)四种方式 C++的多态性和虚函数是面向对象编程的重要特性,它们允许程序员编写更加灵活和可扩展的代码。多态性是指程序能够以统一的方式处理不同类型的对象,即使这些对象具有不同的实现。在C++中,多态性主要通过四种方式实现:重载多态、强制重载、类型参数化多态和包含多态。 1. 重载多态:通过函数重载(function overloading)和运算符重载(operator overloading),可以在同一作用域内使用相同的名字但参数列表不同的函数或运算符,实现对不同情况的处理。 2. 强制重载:通过类型强制转换,可以改变对象的类型,从而调用不同的成员函数。 3. 类型参数化多态:模板(templates)是一种强大的工具,它允许创建泛型代码,可以处理多种数据类型。 4. 包含多态:这是通过继承和虚函数来实现的,是多态的核心机制。当基类的某个函数被声明为虚函数时,派生类可以覆盖这个函数,使得在运行时根据对象的实际类型调用正确的函数。 虚函数是包含多态的关键。在C++中,如果一个类声明了一个虚函数,编译器就会为这个类创建一个虚函数表(VTABLE),其中包含了虚函数的地址。每个含有虚函数的对象都有一个指向这个表的指针(vptr)。当通过基类指针调用虚函数时,实际调用的是对象实际类型对应的虚函数,这就是动态联编(dynamic binding)。 静态联编(static binding)则是在编译期间就确定函数调用,基于函数调用的对象类型来选择相应的函数。而动态联编则延迟到运行时,基于对象的实际类型来确定调用哪个函数。这使得多态类可以处理各种派生类对象,而无需关心具体的类型,从而增强了代码的灵活性和复用性。 虚函数的定义使用`virtual`关键字,可以是类声明的一部分,也可以在函数定义前添加。派生类可以覆盖基类的虚函数,即使没有再次声明`virtual`,因为C++会自动将同名的成员函数视为虚函数。如果派生类没有重写虚函数,那么调用时将使用基类的实现。 总结来说,C++的多态性和虚函数为编写面向对象程序提供了强大的能力,让代码能够处理不同类型的对象,同时保持代码的简洁性和可扩展性。通过理解和熟练运用这些特性,开发者可以构建更加灵活和健壮的软件系统。
















- 粉丝: 6
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 国际工程的项目管理模式(1).docx
- 计算机与智能教育学院.docx
- 2023年全国计算机二级考试公共基础知识题库及答案.doc
- 微软公司招聘过程及经验.pptx
- 较好的人工智能PPT(PPT34页).ppt
- 国家开放大学电大《网络应用服务管理》机考第一套真题题库及答案.docx
- 维九度网络推广方案.pdf
- 基于单片机的智能家居防火防盗报警系统-毕业设计.doc
- 网络小说对中学生影响的调查报告.docx
- 项目管理惩罚条例.doc
- 网络营销之二外部优化的大方法.pptx
- 高端商务写字楼项目管理标准化情况汇报(11页-图文丰富).ppt
- 电子商务进农村解决方案.doc
- 高校后勤会计信息化的建构【精品发布】.doc
- 阳光公司网络系统规划设计实习报告.pdf
- 中国电信无线网络应急指导手册.doc



评论0