工程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)相关推荐

  1. 【OpenCV入门指南】第十篇 彩色直方图均衡化

    上一篇<OpenCV第十篇灰度直方图均衡化>介绍了灰度图像的直方图均衡化,实际生活中,肯定还是彩色图像用的最多,因此本篇介绍对彩色图像进行直方图均衡化.这样可以让大家直方图均衡化对图像增强 ...

  2. Spark性能优化指南:基础篇

    前言 在大数据计算领域,Spark已经成为了越来越流行.越来越受欢迎的计算平台之一.Spark的功能涵盖了大数据领域的离线批处理.SQL类处理.流式/实时计算.机器学习.图计算等各种不同类型的计算操作 ...

  3. spring架构初学者_完整的厨师和基础架构初学者指南

    spring架构初学者 by Mohak Puri 由Mohak Puri 完整的厨师和基础架构初学者指南 (A complete beginner's guide to Chef and infra ...

  4. aqr资本二十年精选二十篇_2016年2月:前10名和编辑精选

    aqr资本二十年精选二十篇 在29个月的时间内,Opensource.com的网页浏览量为821,528,令人兴奋的2月. 我们在2月发表了87篇文章,其中包括< 开源职业生涯>系列中的5 ...

  5. amd860k能装黑苹果吗_黑苹果配置 篇六:黑苹果硬件选购指南之终篇--2019年8月

    黑苹果配置 篇六:黑苹果硬件选购指南之终篇--2019年8月 2019-08-17 17:31:38 26点赞 238收藏 33评论 你是AMD Yes党?还是intel和NVIDIA的忠实簇拥呢?最 ...

  6. SAP UI5 初学者教程之十九 - SAP UI5 数据类型和复杂的数据绑定

    一套适合 SAP UI5 初学者循序渐进的学习教程 教程目录 SAP UI5 本地开发环境的搭建 SAP UI5 初学者教程之一:Hello World SAP UI5 初学者教程之二:SAP UI5 ...

  7. SAP UI5 初学者教程之十五 - 对话框和 Fragments 的使用方式试读版

    一套适合 SAP UI5 初学者循序渐进的学习教程 教程目录 SAP UI5 本地开发环境的搭建 SAP UI5 初学者教程之一:Hello World SAP UI5 初学者教程之二:SAP UI5 ...

  8. SAP UI5 初学者教程之十二 - 使用 CSS 类对 UI 进行进一步美化试读版

    一套适合 SAP UI5 初学者循序渐进的学习教程 教程目录 SAP UI5 本地开发环境的搭建 SAP UI5 初学者教程之一:Hello World SAP UI5 初学者教程之二:SAP UI5 ...

  9. SAP UI5 初学者教程之十 - 什么是 SAP UI5 应用的描述符 Descriptor 试读版

    一套适合 SAP UI5 初学者循序渐进的学习教程 教程目录 SAP UI5 本地开发环境的搭建 SAP UI5 初学者教程之一:Hello World SAP UI5 初学者教程之二:SAP UI5 ...

最新文章

  1. (001) java后台开发之流程初识
  2. 如何正确选择合适的贷款机构,避免征信花掉?
  3. mac adb 找不到设备_win/Mac办公软件下载找不到资源?试试这三个强大的神器
  4. 智能助手被指侵犯用户隐私,美三大科技巨头或面临调查;传小米已解散其VR头显Mi VR团队;特斯拉成立反欺诈部门……...
  5. 可以进行单元测试么_为什么程序员都讨厌写单元测试?有一个词叫“相爱相杀”!...
  6. ftp 根据特定正则匹配文件名 下载到本地 并且上传文件到ftp java *** 最爱那水货...
  7. 华为Mate 30 Pro相机要上天了:主摄或达8100万像素
  8. php mssql及php mysql_Linux下PHP支持MSSql的配置
  9. js异步之setTimeout与setInterval
  10. PyCharm Project Structure
  11. Linux下命令行导入sql文件
  12. 如何快速合并多个TXT文件
  13. 解决Jar包双击打不开!
  14. ADAMoracle去中心化预言机价值核心在哪
  15. Java学习第二十四天
  16. 看网页视频如何自定义倍速(b站举例)
  17. 曙光服务器怎么外接显示器,教您显示器外接方法
  18. 服务器维护实用工具(Unicode)版本,修复SQL Server 2000数据库之实战经验
  19. 关于LK详细解析介绍
  20. Android加密之全盘加密详解

热门文章

  1. 什么是委派模式(Delegate)?应用场景是什么?
  2. 《投资时报》报道云创大数据“稳经济”举措
  3. 举个程序员年终总结大纲的例子
  4. 模仿QQ左滑删除当前会话列表
  5. 这个AI换脸算法,让马斯克也体验了一把当钢铁侠——SberSwap算法
  6. java8的新特性处理集合(一)整理
  7. linux 485串口运行一段时间之后 无反应,Supper tiny4412 用友善之臂官方文档资料移植uboot出错  出现OK后就没反应了 求大神解救...
  8. linux smb视频,利用 CentOS 7 samba 服务器与 ES 文件浏览器实现手机端在线播放电脑端视频...
  9. 安卓 python环境_Android python环境搭建
  10. win10只有一个账户删除提示密码错误