C++初学者指南 第十篇(5)
工程10-1 扩展Vehicle类
在该工程中,我们针对第八章中的Vehicle类创建一个子类。
回忆一下,Vechile类封装了汽车的信息,包括载客人数,邮箱容量以及每加仑油能跑的里程数。我们可以以Vechile类作为基础来创建更多更具体的类。例如,卡车就是一种Vechile。卡车的一个重要属性就是它的载重量。因此我们可以采用集成Vehicle类的方式来创建Truck类,只需要增加一个实例变量来表示它的载重量。在该工程中,我们就将创建这样的Truck类。其中,我们会把Vehicle的实例变量声明为private,而增加访问函数来获取它们的值。
步骤:
1. 创建一个文件,名称TruckDemo.cpp,把第八章中最后一个版本的Vehicle的实现拷贝过来。
2. 创建Trucnk类,如下:
//在Vechile类的基础上增加特有的属性
class Truck : public Vehicle
{
public: int cargocap; //载重量,单位:磅 //构造函数 Truck( int p , int f, int m, int c ) : Vehicle(p,f,m) { cargocap = c; } //载重量的访问函数 int get_cargocap() { return cargocap; }
};
这里,Truck类继承了Vehicle类,并增加了cargaocap成员。因此,Truck类中包含了通用类Vechile中的全部元素。增加的只是Trunck特有的元素。
3. 完整的程序如下:
#include <iostream>
using namespace std;
//声明Vehicle类
class Vehicle
{int passengers; // 载客人数int fuelcap; // 油箱容量int mpg; // 每加仑油能跑的里程数
public://构造函数Vehicle(int p, int f, int m){passengers = p;fuelcap = f;mpg = m;}int range() //计算并返回汽车能跑的最大里程数,此处为函数声明{return mpg * fuelcap;}//访问函数int get_passangers() { return passengers; };int get_fuelcap() { return fuelcap; };int get_mpg() { return mpg; };
};
//在Vechile类的基础上增加特有的属性
class Truck : public Vehicle
{
public:int cargocap; //载重量,单位:磅//构造函数Truck( int p , int f, int m, int c ) : Vehicle(p,f,m){cargocap = c;}//载重量的访问函数int get_cargocap(){return cargocap;}
};
int main()
{//生成Trunck类的对象Truck semi(2,200,7,4400);Truck pickup(3,28,15,2000);int dist = 252;cout <<"Semi can carry " << semi.get_cargocap() << " pounds.\n";cout << "It has a range of " << semi.range() << " miles.\n";cout << "To go " << dist << " miles semi needs " << dist/semi.get_mpg() << " gallons of fuel.\n\n";cout <<"Pickup can carry " << pickup.get_cargocap() << " pounds.\n";cout << "It has a range of " << pickup.range() << " miles.\n";cout << "To go " << dist << " miles pickup needs " << dist/pickup.get_mpg() << " gallons of fuel.\n";return 0;
}
4. 上面程序的输出如下:
Semi can carry 4400 pounds.
It has a range of 1400 miles.
To go 252 miles semi needs 36 gallons of fuel.
Pickup can carry 2000 pounds.
It has a range of 420 miles.
To go 252 miles pickup needs 16 gallons of fuel.
5. 我们还可以从Vehicle类派生出许多别的类。比如,下面的代码框架就创建了一个越野车的类,它存储了车辆距离地面的净距离:
class off-road : public Vechile
{
int groundClearance; // 距离地面净距离,单位英寸
public:
// ...
};
重要的一点是,一点我们创建了具有对象通用属性的基类,我们就可以继承该类从而创建特殊的类。每个派生类只是简单地增加自己特有的属性即可,这就是继承的本质。
C++初学者指南 第十篇(5)相关推荐
- 【OpenCV入门指南】第十篇 彩色直方图均衡化
上一篇<OpenCV第十篇灰度直方图均衡化>介绍了灰度图像的直方图均衡化,实际生活中,肯定还是彩色图像用的最多,因此本篇介绍对彩色图像进行直方图均衡化.这样可以让大家直方图均衡化对图像增强 ...
- Spark性能优化指南:基础篇
前言 在大数据计算领域,Spark已经成为了越来越流行.越来越受欢迎的计算平台之一.Spark的功能涵盖了大数据领域的离线批处理.SQL类处理.流式/实时计算.机器学习.图计算等各种不同类型的计算操作 ...
- spring架构初学者_完整的厨师和基础架构初学者指南
spring架构初学者 by Mohak Puri 由Mohak Puri 完整的厨师和基础架构初学者指南 (A complete beginner's guide to Chef and infra ...
- aqr资本二十年精选二十篇_2016年2月:前10名和编辑精选
aqr资本二十年精选二十篇 在29个月的时间内,Opensource.com的网页浏览量为821,528,令人兴奋的2月. 我们在2月发表了87篇文章,其中包括< 开源职业生涯>系列中的5 ...
- amd860k能装黑苹果吗_黑苹果配置 篇六:黑苹果硬件选购指南之终篇--2019年8月
黑苹果配置 篇六:黑苹果硬件选购指南之终篇--2019年8月 2019-08-17 17:31:38 26点赞 238收藏 33评论 你是AMD Yes党?还是intel和NVIDIA的忠实簇拥呢?最 ...
- SAP UI5 初学者教程之十九 - SAP UI5 数据类型和复杂的数据绑定
一套适合 SAP UI5 初学者循序渐进的学习教程 教程目录 SAP UI5 本地开发环境的搭建 SAP UI5 初学者教程之一:Hello World SAP UI5 初学者教程之二:SAP UI5 ...
- SAP UI5 初学者教程之十五 - 对话框和 Fragments 的使用方式试读版
一套适合 SAP UI5 初学者循序渐进的学习教程 教程目录 SAP UI5 本地开发环境的搭建 SAP UI5 初学者教程之一:Hello World SAP UI5 初学者教程之二:SAP UI5 ...
- SAP UI5 初学者教程之十二 - 使用 CSS 类对 UI 进行进一步美化试读版
一套适合 SAP UI5 初学者循序渐进的学习教程 教程目录 SAP UI5 本地开发环境的搭建 SAP UI5 初学者教程之一:Hello World SAP UI5 初学者教程之二:SAP UI5 ...
- SAP UI5 初学者教程之十 - 什么是 SAP UI5 应用的描述符 Descriptor 试读版
一套适合 SAP UI5 初学者循序渐进的学习教程 教程目录 SAP UI5 本地开发环境的搭建 SAP UI5 初学者教程之一:Hello World SAP UI5 初学者教程之二:SAP UI5 ...
最新文章
- (001) java后台开发之流程初识
- 如何正确选择合适的贷款机构,避免征信花掉?
- mac adb 找不到设备_win/Mac办公软件下载找不到资源?试试这三个强大的神器
- 智能助手被指侵犯用户隐私,美三大科技巨头或面临调查;传小米已解散其VR头显Mi VR团队;特斯拉成立反欺诈部门……...
- 可以进行单元测试么_为什么程序员都讨厌写单元测试?有一个词叫“相爱相杀”!...
- ftp 根据特定正则匹配文件名 下载到本地 并且上传文件到ftp java *** 最爱那水货...
- 华为Mate 30 Pro相机要上天了:主摄或达8100万像素
- php mssql及php mysql_Linux下PHP支持MSSql的配置
- js异步之setTimeout与setInterval
- PyCharm Project Structure
- Linux下命令行导入sql文件
- 如何快速合并多个TXT文件
- 解决Jar包双击打不开!
- ADAMoracle去中心化预言机价值核心在哪
- Java学习第二十四天
- 看网页视频如何自定义倍速(b站举例)
- 曙光服务器怎么外接显示器,教您显示器外接方法
- 服务器维护实用工具(Unicode)版本,修复SQL Server 2000数据库之实战经验
- 关于LK详细解析介绍
- Android加密之全盘加密详解
热门文章
- 什么是委派模式(Delegate)?应用场景是什么?
- 《投资时报》报道云创大数据“稳经济”举措
- 举个程序员年终总结大纲的例子
- 模仿QQ左滑删除当前会话列表
- 这个AI换脸算法,让马斯克也体验了一把当钢铁侠——SberSwap算法
- java8的新特性处理集合(一)整理
- linux 485串口运行一段时间之后 无反应,Supper tiny4412 用友善之臂官方文档资料移植uboot出错 出现OK后就没反应了 求大神解救...
- linux smb视频,利用 CentOS 7 samba 服务器与 ES 文件浏览器实现手机端在线播放电脑端视频...
- 安卓 python环境_Android python环境搭建
- win10只有一个账户删除提示密码错误