1. Target:定义一个车(vehicle)基类
    具有MaxSpeed、Weight等成员变量,Run、Stop等成员函数,由此派生出自行车(bicycle)类、汽车(motorcar)类。
    自行车(bicycle)类有高度(Height)等属性,汽车(motorcar)类有座位数(SeatNum)等属性。
    从bicycle和motorcar派生出摩托车(motorcycle)类,在继承过程中,注意把vehicle设置为虚基类。
  2. 代码如下:
#include<iostream>
#include<string>
using namespace std;
class vehicle {
private:
double MaxSpeed;
double Weight;
public:
vehicle(double MS,double WE) {
MaxSpeed = MS;
Weight = WE;
}
~vehicle() { }
double GetMaxSpeed() {
return MaxSpeed;
}
double GetWeight() {
return Weight;
}
void Run() {
cout << "The MaxSpeed of the vehicle is " << MaxSpeed << endl;
cout << "The Weight of the vehicle is " << Weight << endl;
}
void Stop() {
cout << "The vehicle has stopped!!!" << endl;
}
};
class bicycle :virtual public vehicle {
private:
double Height;
public:
bicycle(double MS,double WE,double HE):vehicle(MS, WE) {
Height = HE;
}
~bicycle() { }
double GetHeight() {
return Height;
}
void Run() {
cout << "The height of the bicycle is "<< Height << endl;
}
void Stop() {
cout << "The bicycle has stopped!" << endl;
}
};
class motorcar :virtual vehicle {
private:
int SeatNum;
public:
motorcar(double MS, double WE, int SN):vehicle(MS,WE) {
SeatNum = SN;
}
~motorcar() { }
int GetSeatNum() {
return SeatNum;
}
void Run() {
cout << "The SeatNum of the motorcar is "<< SeatNum << endl;
}
void Stop() {
cout << "The motorcar has stopped!" << endl;
}
};
class motorcycle :public bicycle, public motorcar {
public:
motorcycle(double m, double w, double h, double n) :vehicle(m, w), bicycle(m, w, h), motorcar(m, w, n) { }
~motorcycle() { }
void Run() {
cout << "This is a motorcycle:" << endl;
cout << "MaxSpeed:" << GetMaxSpeed() << endl;
cout << "Weight:" << GetWeight() << endl;
cout << "Height:" << GetHeight() << endl;
cout << "SeatNum:" << GetSeatNum() << endl;
}
void Stop() {
cout << "The motorcycle has stopped!!!" << endl;
}
};
int main() {
vehicle t1(12.0, 12.0);
t1.Run();
t1.Stop();
bicycle t2(16.0, 15.2, 36);
t2.Run();
t2.Stop();
motorcar t3(13, 65, 33);
t3.Run();
t3.Stop();
motorcycle t4(12, 56, 8, 4);
t4.Run();
t4.Stop();
return 0;
}

3.测试截图

C++继承和派生练习(一)--关于vehicle基类的更多相关文章

  1. 模块的封装之C语言类的继承和派生

    [交流][微知识]模块的封装(二):C语言的继承和派生 在模块的封装(一):C语言的封装中,我们介绍了如何使用C语言的结构体来实现一个类的封装,并通过掩码结构体的方式实 现了类成员的保护.这一部分,我 ...

  2. DAY7-面向对象之继承与派生

    一.初识继承 什么是继承 继承是一种创建新类的方式,新建的类可以继承一个或多个父类(python支持多继承),父类又可称为基类或超类,新建的类称为派生类或子类. 子类会“”遗传”父类的属性,从而解决代 ...

  3. 04737_C++程序设计_第6章_继承和派生

    例6.1 使用默认内联函数实现单一继承. #include<iostream> using namespace std; class Point { private: int x, y; ...

  4. C++学习之路—继承与派生(三):多重继承与虚基类

    (根据<C++程序设计>(谭浩强)整理,整理者:华科小涛,@http://www.cnblogs.com/hust-ghtao转载请注明) 多重继承是指一个派生类有两个或多个基类.例如,有 ...

  5. C/C++基础知识总结——继承与派生

    1. 类的继承与派生 1.1 派生类的定义 (1) 定义规范 class 派生类名: 继承方式 基类1名, 继承方式 基类2名... { ...派生类成员声明; }; (2) 从以上形式上看可以多继承 ...

  6. C++学习笔记44:继承与派生

    类的组合,类的继承 类的组合(汽车类,轮子类,此时可以把轮子类组合到汽车类:) 类的继承(交通工具类,汽车类,此时汽车类可以派生自交通工具类:) 组合:常用描述has a.. 继承:常用描述is a ...

  7. C++复习:继承与派生

    1继承概念 面向对象程序设计有4个主要特点:抽象.封装.继承和多态性.说了类和对象,了解了面向对象程序设计的两个重要特征一数据抽象与封装,已经能够设计出基于对象的程序,这是面向对象程序设计的基础. 要 ...

  8. Python入门之面向对象之类继承与派生

    本章内容 一.继承 二.抽象类 三.继承的实现原理 ======================================================= 一.继承 1. 继承的定义 继承是一 ...

  9. C++课程小结 继承与派生

    单继承与多重继承的区别 单继承:一个子类(派生类)只有一个父类(只由一个基类派生而成) 多继承:一个子类(派生类)有多个父类(由多个基类派生而成) 派生类的构成 (1) 从基类继承过来的成员(包括数据 ...

随机推荐

  1. ubuntu下安装MySQL8.0

    为了一劳永逸不每次都到处找资料,花了一下午时间做了这些.其中大部分是根据官方手册来的,后面部分谢谢大佬的帮助,超开心. 一.首先,将MySQL APT存储库添加到系统的软件存储库列表中 1.转到htt ...

  2. 创建Python数据分析的Docker镜像+Docker自定义镜像commit,Dockerfile方式解析+pull,push,rmi操作

    实例解析Docker如何通过commit,Dockerfile两种方式自定义Dcoker镜像,对自定义镜像的pull,push,rmi等常用操作,通过实例创建一个Python数据分析开发环境的Dock ...

  3. Java环境路径配置--转载

    windows环境中JDK环境变量配置   一.环境准备 Windows10 jdk-9.0.1 二.下载并安装JDK 到Java的官网下载JDK安装包,地址:http://www.oracle.co ...

  4. 保存及读取keras模型参数

    转自:http://blog.csdn.net/u010159842/article/details/54407745,感谢分享~ 你可以使用model.save(filepath)将Keras模型和 ...

  5. python获取硬件信息模块

    https://github.com/redhat-cip/hardware https://github.com/rdobson/python-hwinfo https://github.com/r ...

  6. python 之 BeautifulSoup标签查找与信息提取

    一. 查找a标签 (1)查找所有a标签 >>> for x in soup.find_all('a'): print(x) <a class="sister" ...

  7. 在Eclipse中安装JSHint插件

    离线安装 1.下载插件包 http://download.eclipsesource.com/~rsternberg/jshint-eclipse-0.9.8.20130728-0004-b94b44 ...

  8. CentOS7 查询已安装的包方便整理 /卸载

    以PHP为例.首先查看已安装的PHP rpm -qa |grep php 输出结果: php-cli--.el7.x86_64 php-common--.el7.x86_64 查询rpm包的安装时间和 ...

  9. python入门16 递归函数 高阶函数

    递归函数:函数内部调用自身.(要注意跳出条件,否则会死循环) 高阶函数:函数的参数包含函数 递归函数 #coding:utf-8 #/usr/bin/python """ ...

  10. Jmeter入门2 http请求—简单的get请求

    发送一个简单的get http请求 1 启动Jmeter,在测试计划上点击鼠标右键>添加>Threads(Users)>线程组 2 线程组界面.可设置线程数,几秒启动所有线程,循环次 ...