声明一个车(vehicle)基类,有Run、Stop 等成员函数,由此派生出自行车(bicycle)类、汽车(motorcar)类,从bicycle 和motorcar 派生出摩托车(motorcycle)类,它们都有Run、Stop 等成员函数。观察虚函数的作用。#include <iostream> using namespace std; /********** Begin **********/ /********** End **********/ class Motorcycle : public Bicycle, public Motorcar { public: void Run() {cout << "motocycle run!" << endl;} void Stop() {cout << "motocycle stop!" << endl;} }; int main() { Vehicle v; v.Run(); v.Stop(); Bicycle b; b.Run(); b.Stop(); Motorcar m; m.Run(); m.Stop(); Motorcycle mc; mc.Run(); mc.Stop(); Vehicle* vp = &v; vp->Run(); vp->Stop(); vp = &b; vp->Run(); vp->Stop(); vp = &m; vp->Run(); vp->Stop(); vp = &mc; vp->Run(); vp->Stop(); return 0; }

时间: 2023-07-23 09:20:01 浏览: 64
好的,这是一个跟之前类似的代码示例,但是缺少了声明基类 Vehicle 的代码。以下是完整的代码示例: ```c++ #include <iostream> using namespace std; class Vehicle { public: virtual void Run() { cout << "Vehicle is running." << endl; } virtual void Stop() { cout << "Vehicle has stopped." << endl; } }; class Bicycle : public Vehicle { public: void Run() override { cout << "Bicycle is running." << endl; } void Stop() override { cout << "Bicycle has stopped." << endl; } }; class Motorcar : public Vehicle { public: void Run() override { cout << "Motorcar is running." << endl; } void Stop() override { cout << "Motorcar has stopped." << endl; } }; class Motorcycle : public Bicycle, public Motorcar { public: void Run() override { cout << "Motorcycle is running." << endl; } void Stop() override { cout << "Motorcycle has stopped." << endl; } }; int main() { Vehicle v; v.Run(); v.Stop(); Bicycle b; b.Run(); b.Stop(); Motorcar m; m.Run(); m.Stop(); Motorcycle mc; mc.Run(); mc.Stop(); Vehicle* vp = &v; vp->Run(); vp->Stop(); vp = &b; vp->Run(); vp->Stop(); vp = &m; vp->Run(); vp->Stop(); vp = &mc; vp->Run(); vp->Stop(); return 0; } ``` 在这个代码示例中,我们声明了基类 Vehicle 和三个派生类 Bicycle、Motorcar 和 Motorcycle,它们都拥有 Run 和 Stop 函数,并且在派生类中重写了基类的虚函数。 在 main 函数中,我们创建了四个对象:Vehicle、Bicycle、Motorcar 和 Motorcycle,并且通过指向基类对象的指针来调用它们的 Run 和 Stop 函数,从而实现了多态。 运行结果如下: ``` Vehicle is running. Vehicle has stopped. Bicycle is running. Bicycle has stopped. Motorcar is running. Motorcar has stopped. Motorcycle is running. Motorcycle has stopped. Vehicle is running. Vehicle has stopped. Bicycle is running. Bicycle has stopped. Motorcar is running. Motorcar has stopped. Motorcycle is running. Motorcycle has stopped. ``` 可以看到,虚函数的作用是让派生类能够重写基类的函数,从而实现不同的行为。在这个代码示例中,我们通过多态的方式实现了不同对象的行为,并且通过指向基类对象的指针来调用不同派生类对象的函数。

相关推荐

最新推荐

互联网公司资料整理及面试资料.zip

这份互联网校招试题资料包含了各个互联网公司常见的笔试面试题目,涵盖了计算机基础知识、编程语言、数据结构与算法、操作系统、网络通信等多个方面。这些试题旨在考察求职者的专业知识水平和解决问题的能力,是互联网公司选拔人才的重要依据之一。 首先,这份试题资料包含了大量的计算机基础知识题目,涉及计算机组成原理、操作系统原理、数据库原理等方面的知识点。这些题目旨在考察求职者对计算机基础知识的掌握程度,以及对计算机系统运作原理的理解能力。 其次,编程语言题目也是这份试题资料的重要内容之一。常见的编程语言包括C、C++、Java、Python等,这些题目旨在考察求职者的编程能力和解决问题的思维方式。通过编程题目的练习,求职者可以提升自己的编程技能,为未来的工作做好准备。 此外,数据结构与算法题目也是这份试题资料的重点之一。数据结构与算法是计算机科学的核心内容,对于互联网行业的求职者来说尤为重要。通过解答数据结构与算法题目,求职者可以提升自己的问题解决能力和编程思维,为日后的工作打下坚实的基础。 ———————————————— 版权声明:

基于UART-COmmunication-one-wire 充电盒-BES耳机通信系统设计.docx

基于UART-COmmunication-one-wire 充电盒-BES耳机通信系统设计.docx

工作日常必会Linux基础知识

面对刚接linux系统的新手,列出后端日常工作所需的Linux必会知识,方便快速入门。 通过本文,可以对linux系统和常用命令有个大致的了解,建立大致的知识框架。 本文内容来着工作日常整理,相关涉及图片和资料来自互联网以及《鸟哥linux私房菜》。

人工智能-项目实践-搜索引擎-使用Vue.js搭建的ElasticSearch搜索引擎的前端

使用Vue.js搭建的ElasticSearch搜索引擎的前端 Build Setup # install dependencies npm install # serve with hot reload at localhost:8080 npm run dev # build for production with minification npm run build # build for production and view the bundle analyzer report npm run build --report

数据仓库数据挖掘综述.ppt

数据仓库数据挖掘综述.ppt

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire

springboot新闻信息管理系统开发技术文档更新

# 1. 系统概述 ## 1.1 项目背景 在当今信息爆炸的时代,新闻信息是人们获取信息的重要渠道之一。为了满足用户对新闻阅读的需求,我们决定开发一个新闻信息管理系统,该系统旨在提供便捷的新闻发布、浏览与管理功能,同时也要保证系统的性能和安全防护。 ## 1.2 系统目标与功能需求 系统的目标是构建一个高效、稳定、安全的新闻信息管理平台,主要包括但不限于以下功能需求: - 新闻信息的增加、修改、删除、查询 - 用户的注册、登录与权限控制 - 数据库性能优化与缓存机制实现 - 安全防护措施的设计与漏洞修复 ## 1.3 技术选型与架构设计 在系统设计中,我们选择采用Java

hive 分区字段获取10天账期数据

假设你的 Hive 表名为 `my_table`,分区字段为 `account_date`,需要获取最近 10 天的数据,可以按照以下步骤操作: 1. 首先,获取当前日期并减去 10 天,得到起始日期,比如: ``` start_date=$(date -d "10 days ago" +"%Y-%m-%d") ``` 2. 接下来,使用 Hive 查询语句从分区中筛选出符合条件的数据。查询语句如下: ``` SELECT * FROM my_table WHERE account_date >= '${start_date}' ```

生活垃圾卫生填埋场运营管理手册.pdf

生活垃圾卫生填埋场运营管理手册.pdf

"互动学习:行动中的多样性与论文攻读经历"

多样性她- 事实上SCI NCES你的时间表ECOLEDO C Tora SC和NCESPOUR l’Ingén学习互动,互动学习以行动为中心的强化学习学会互动,互动学习,以行动为中心的强化学习计算机科学博士论文于2021年9月28日在Villeneuve d'Asq公开支持马修·瑟林评审团主席法布里斯·勒菲弗尔阿维尼翁大学教授论文指导奥利维尔·皮耶昆谷歌研究教授:智囊团论文联合主任菲利普·普雷教授,大学。里尔/CRISTAL/因里亚报告员奥利维耶·西格德索邦大学报告员卢多维奇·德诺耶教授,Facebook /索邦大学审查员越南圣迈IMT Atlantic高级讲师邀请弗洛里安·斯特鲁布博士,Deepmind对于那些及时看到自己错误的人...3谢谢你首先,我要感谢我的两位博士生导师Olivier和Philippe。奥利维尔,"站在巨人的肩膀上"这句话对你来说完全有意义了。从科学上讲,你知道在这篇论文的(许多)错误中,你是我可以依