/* (程序头部注释开始)      
* 程序的版权和版本声明部分      
* Copyright (c) 2011, 烟台大学计算机学院学生       
* All rights reserved.      
* 作    者:     刘向一                      
* 完成日期:     2012 年5月14日      
* 版 本 号:      V1.0        
* 对任务及求解方法的描述部分      
* 输入描述:       
* 问题描述:    
* 程序输出:       
* 程序头部的注释结束

*/

任务1-1

#include <iostream>
using namespace std;
class Vehicle
{
public:
virtual void run() const =0; //(2) run()为虚函数
};
class Car: public Vehicle
{
public:
void run() const {cout << "run a car. "<<endl;    }
};
class Airplane: public Vehicle
{
public:
void run() const {cout << "run a airplane. "<<endl;}
};
int main()
{
cout<<"(a) 直接用对象访问成员函数: "<<endl;
Car car;
Airplane airplane;
car.run();
airplane.run();
cout<<"(b) 用指向基类的指针访问成员函数: "<<endl;
Vehicle *vp;
vp=&car;
vp->run();
vp=&airplane;
vp->run();
system("pause");
return 0;
}

运行结果:

(a) 直接用对象访问成员函数:
run a vehicle.
run a car.
run a airplane.
(b) 用指向基类的指针访问成员函数:
run a vehicle.
run a vehicle.
请按任意键继续. . .

任务1-2

#include <iostream>
using namespace std;
class Vehicle
{
public:
virtual void run() const { cout << "run a vehicle. "<<endl; } //(2) run()为虚函数
};
class Car: public Vehicle
{
public:
void run() const {cout << "run a car. "<<endl;    }
};
class Airplane: public Vehicle
{
public:
void run() const {cout << "run a airplane. "<<endl;}
};
int main()
{
cout<<"(a) 直接用对象访问成员函数: "<<endl;
Vehicle v;
v.run();
Car car;
Airplane airplane;
car.run();
airplane.run();
cout<<"(b) 用指向基类的指针访问成员函数: "<<endl;
Vehicle *vp;
vp=&car;
vp->run();
vp=&airplane;
vp->run();
system("pause");
return 0;
} 

运行结果:

(a) 直接用对象访问成员函数:
run a vehicle.
run a car.
run a airplane.
(b) 用指向基类的指针访问成员函数:
run a car.
run a airplane.
请按任意键继续. . .

任务1-3

#include <iostream>
using namespace std;
class Vehicle
{
public:
virtual void run() const =0; //(2) run()为虚函数
};
class Car: public Vehicle
{
public:
void run() const {cout << "run a car. "<<endl;    }
};
class Airplane: public Vehicle
{
public:
void run() const {cout << "run a airplane. "<<endl;}
};
int main()
{
cout<<"(a) 直接用对象访问成员函数: "<<endl;
Car car;
Airplane airplane;
car.run();
airplane.run();
cout<<"(b) 用指向基类的指针访问成员函数: "<<endl;
Vehicle *vp;
vp=&car;
vp->run();
vp=&airplane;
vp->run();
system("pause");
return 0;
}

运行结果:

(a) 直接用对象访问成员函数:
run a car.
run a airplane.
(b) 用指向基类的指针访问成员函数:
run a car.
run a airplane.
请按任意键继续. . .

总结:

虚函数的作用:
允许在派生类中重新定义与基类同名的函数,并且通过基类指针或引用来访问基类和派生类中的同名函数。

纯虚数的作用:
在基类中为其派生类保留一个函数的名字,以便派生类根据需要为其定义,纯虚数不能被调用。

抽象类的作用:
作为一个类族的共同基类。

动态多样性是通过虚函数实现的,通过指向积累的指针来灵活访问派生类中的同名函数成员,实现不同功能。

第十三周 任务一相关推荐

  1. 第十三周学习进度情况

      第十三周 所花时间(包括上课) 450MIN 代码量(行) 100 博客量(篇) 5 了解到的知识 1.这周课堂作业学会了map函数的运用. 2.正在进行第二阶段的团队冲刺. 转载于:https: ...

  2. 20135203齐岳 信息安全系统设计基础第十三周学习总结

    20135203齐岳 信息安全系统设计基础第十三周学习总结 学习计时:8/9共小时(计划/实际) 读书:4/5 代码:1/1 作业:1/1 博客:2/2 第十二章 并发编程 一.学习目标 掌握三种并发 ...

  3. 201521123122 《java程序设计》第十三周学习总结

    ## 201521123122 <java程序设计>第十三周实验总结 ## 1. 本周学习总结 以你喜欢的方式(思维导图.OneNote或其他)归纳总结多网络相关内容. 2. 书面作业 1 ...

  4. 20145203 《信息安全系统设计基础》第十三周学习总结

    20145203 <信息安全系统设计基础>第十三周学习总结 第十二章 并发编程 教材学习内容总结 绪论 三种基本的构造并发程序的方法: ①进程: 每个逻辑控制流是一个进程,由内核进行调度, ...

  5. 软件工程--第十三周学习进度

      第十三周 代码量 258  所花时间  6h 博客量  2篇 了解到的知识点  在寻找"水王"程序编写时,学习了一种新的设计思想,两两删除法,最后剩下的就是水王.这种设计思想, ...

  6. 2017-2018-1 20155227 《信息安全系统设计基础》第十三周学习总结

    2017-2018-1 20155227 <信息安全系统设计基础>第十三周学习总结 找出全书你认为最重要的一章,深入重新学习一下,要求(期末占10分): 完成这一章所有习题详细总结本章要点 ...

  7. 2017-2018-1 20155229 《信息安全系统设计基础》第十三周学习总结

    2017-2018-1 20155229 <信息安全系统设计基础>第十三周学习总结 对"第二章 信息的表示和处理"的深入学习 这周的任务是选一章认为最重要的进行学习,我 ...

  8. 软件工程概论第十三周学习进度

    第十三周学习进度     所花时间(包括上课) 300min 代码量(行) 400左右 博客量(篇) 2 了解到的知识点 Java 主要学会了登录界面的实现, 和一些控件的运用, 比如button等等 ...

  9. 2017-2018-1 20155301 《信息安全系统设计基础》第十三周学习总结

    2017-2018-1 20155301 <信息安全系统设计基础>第十三周学习总结 本章要点 并发:如果逻辑流在时间上重叠,那么他们就是并发的,硬件异常处理程序.进程和UNIX信号处理程序 ...

最新文章

  1. python从入门到精通书-100G Python从入门到精通全套资料!
  2. OpenWrt安装迅雷成功,实现BT emule等多协议下载
  3. Java this关键字
  4. Shell 自定义函数
  5. python编程入门 适合于零基础朋友-《从零开始学 Python》(第二版)
  6. 如何清除BIOS密码
  7. Vs2010中水晶报表引用及打包
  8. LeetCode刷题——283. 移动零
  9. 百战程序员python百度网盘_【百战程序员】Python 文件I/O
  10. 服务器r软硬件配置,软硬件配置要求 - eSight V300R007C00 产品描述 11 - 华为
  11. 高项论文(进度管理2)
  12. 从百亿美元到零估值,硅谷的Theranos或许不止一个
  13. win远程桌面连接无显示器Ubuntu(22.04.1 LTS)
  14. 微信公众号历史消息栏设置
  15. 计算机二级论文大纲,计算机二级论文
  16. 答:本科生写论文对考研有用吗?
  17. 【C++】结构体数组
  18. 怎么查看系统安装了mysql_如何查看系统安装的MySQL版本?
  19. 2017中山大学计算机考研科目,2017年中山大学0812计算机科学与技术考研参考书目推荐...
  20. x的x次幂(蓝桥杯)

热门文章

  1. Hive的元数据表结构详解(转自lxw1234)
  2. PHP保持静态页面,PHP 实现页面静态化的几种方法
  3. 数字IC设计工程师笔试面试经典100题-有答案
  4. 函数栈帧深度剖析(一篇带你牢牢掌握函数栈帧)
  5. 超好看的3D烟花代码(html+css+js)带音乐
  6. MMORPG游戏AOI解决方案
  7. 给信号添加高斯白噪声
  8. 双模sa_七句话讲清NSA单模与SA+NSA双模5G手机的真实区别
  9. 在网页版 BOSS直聘 上实现 批量打招呼,发信息等操作
  10. 1960-2019年世界银行各国制造业增加值