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. webpack、babel模块、模块化

    一.webpack介绍 webpack这个工具非常强大,解决了前端很繁琐的一些工具流程繁琐的事情.中文官网链接地址:https://www.webpackjs.com/ 1.为什么要使用webpack ...

  2. Drupal theme_hook

    模板语言和主题引擎 用Drupal的行话来说,主题就是一组负责你站点外观的文件.你可以从http://drupal.org/project/Themes下载第 3方主题,或者你可以自己动手创建一个主题 ...

  3. maven项目的创建

    ·做了两年多Java Web一多半的项目都是SSM架构的,只搭建过两次,趁着周末做个总结整理. Eclipse搭建Maven项目 1.new project  --> Maven project ...

  4. mybooklist.cn 书单de故事六月十六日

    1.我的30年30本书 刘苏里书单北京万圣书园总经理,以经营人文社科类图书著称.生于1960年,1983年毕业于北京大学国际政治系,1986年毕业于中国政法大学研究生院.

  5. asyncio标准库7 Producer/consumer

    使用asyncio.Queue import asyncio import random async def produce(queue, n): for x in range(1, n + 1): ...

  6. May 23rd 2017 Week 21st Tuesday

    Winners are not those who never fail but those who never quit. 成功者不是从不失败,而是从不放弃. Nothing is impossib ...

  7. SQA和测试

    一.SQA计划 (1)软件工程:设计出云医院页面和其功能. (2)质量保证:进行需求分析,使用户确信产品或服务能满足规定的质量要求. (3)质量控制:采取不断的调试完善代码和程序确保产品质量. (4) ...

  8. Android(java)学习笔记10:同步中的死锁问题以及线程通信问题

    1. 同步弊端: (1)效率低 (2)如果出现了同步嵌套,就容易产生死锁问题 死锁问题及其代码 : (1)是指两个或者两个以上的线程在执行的过程中,因争夺资源产生的一种互相等待现象 (2)同步代码块的 ...

  9. 【安卓】imageView.scaleType取centerCrop后,再用padding时显示异常?

    imgView.setCropToPadding(true);就可以         

  10. Uva 10217 概率

    题意: 假设一年有n天, 有一些人排队买票,会有一个人中奖,这个人是,他的生日和前面的某一个人相同: 求最佳整数位置,和最佳实数位置: 分析: 第一个人获奖的概率(他和售票员的生日相同): 1/N 第 ...