第十三周 任务一
/* (程序头部注释开始)
* 程序的版权和版本声明部分
* 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.
请按任意键继续. . .
总结:
虚函数的作用:
允许在派生类中重新定义与基类同名的函数,并且通过基类指针或引用来访问基类和派生类中的同名函数。
纯虚数的作用:
在基类中为其派生类保留一个函数的名字,以便派生类根据需要为其定义,纯虚数不能被调用。
抽象类的作用:
作为一个类族的共同基类。
动态多样性是通过虚函数实现的,通过指向积累的指针来灵活访问派生类中的同名函数成员,实现不同功能。
第十三周 任务一相关推荐
- 第十三周学习进度情况
第十三周 所花时间(包括上课) 450MIN 代码量(行) 100 博客量(篇) 5 了解到的知识 1.这周课堂作业学会了map函数的运用. 2.正在进行第二阶段的团队冲刺. 转载于:https: ...
- 20135203齐岳 信息安全系统设计基础第十三周学习总结
20135203齐岳 信息安全系统设计基础第十三周学习总结 学习计时:8/9共小时(计划/实际) 读书:4/5 代码:1/1 作业:1/1 博客:2/2 第十二章 并发编程 一.学习目标 掌握三种并发 ...
- 201521123122 《java程序设计》第十三周学习总结
## 201521123122 <java程序设计>第十三周实验总结 ## 1. 本周学习总结 以你喜欢的方式(思维导图.OneNote或其他)归纳总结多网络相关内容. 2. 书面作业 1 ...
- 20145203 《信息安全系统设计基础》第十三周学习总结
20145203 <信息安全系统设计基础>第十三周学习总结 第十二章 并发编程 教材学习内容总结 绪论 三种基本的构造并发程序的方法: ①进程: 每个逻辑控制流是一个进程,由内核进行调度, ...
- 软件工程--第十三周学习进度
第十三周 代码量 258 所花时间 6h 博客量 2篇 了解到的知识点 在寻找"水王"程序编写时,学习了一种新的设计思想,两两删除法,最后剩下的就是水王.这种设计思想, ...
- 2017-2018-1 20155227 《信息安全系统设计基础》第十三周学习总结
2017-2018-1 20155227 <信息安全系统设计基础>第十三周学习总结 找出全书你认为最重要的一章,深入重新学习一下,要求(期末占10分): 完成这一章所有习题详细总结本章要点 ...
- 2017-2018-1 20155229 《信息安全系统设计基础》第十三周学习总结
2017-2018-1 20155229 <信息安全系统设计基础>第十三周学习总结 对"第二章 信息的表示和处理"的深入学习 这周的任务是选一章认为最重要的进行学习,我 ...
- 软件工程概论第十三周学习进度
第十三周学习进度 所花时间(包括上课) 300min 代码量(行) 400左右 博客量(篇) 2 了解到的知识点 Java 主要学会了登录界面的实现, 和一些控件的运用, 比如button等等 ...
- 2017-2018-1 20155301 《信息安全系统设计基础》第十三周学习总结
2017-2018-1 20155301 <信息安全系统设计基础>第十三周学习总结 本章要点 并发:如果逻辑流在时间上重叠,那么他们就是并发的,硬件异常处理程序.进程和UNIX信号处理程序 ...
最新文章
- python从入门到精通书-100G Python从入门到精通全套资料!
- OpenWrt安装迅雷成功,实现BT emule等多协议下载
- Java this关键字
- Shell 自定义函数
- python编程入门 适合于零基础朋友-《从零开始学 Python》(第二版)
- 如何清除BIOS密码
- Vs2010中水晶报表引用及打包
- LeetCode刷题——283. 移动零
- 百战程序员python百度网盘_【百战程序员】Python 文件I/O
- 服务器r软硬件配置,软硬件配置要求 - eSight V300R007C00 产品描述 11 - 华为
- 高项论文(进度管理2)
- 从百亿美元到零估值,硅谷的Theranos或许不止一个
- win远程桌面连接无显示器Ubuntu(22.04.1 LTS)
- 微信公众号历史消息栏设置
- 计算机二级论文大纲,计算机二级论文
- 答:本科生写论文对考研有用吗?
- 【C++】结构体数组
- 怎么查看系统安装了mysql_如何查看系统安装的MySQL版本?
- 2017中山大学计算机考研科目,2017年中山大学0812计算机科学与技术考研参考书目推荐...
- x的x次幂(蓝桥杯)