C++继承和派生练习(一)--关于vehicle基类
- Target:定义一个车(vehicle)基类
具有MaxSpeed、Weight等成员变量,Run、Stop等成员函数,由此派生出自行车(bicycle)类、汽车(motorcar)类。
自行车(bicycle)类有高度(Height)等属性,汽车(motorcar)类有座位数(SeatNum)等属性。
从bicycle和motorcar派生出摩托车(motorcycle)类,在继承过程中,注意把vehicle设置为虚基类。 - 代码如下:
#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基类的更多相关文章
- 模块的封装之C语言类的继承和派生
[交流][微知识]模块的封装(二):C语言的继承和派生 在模块的封装(一):C语言的封装中,我们介绍了如何使用C语言的结构体来实现一个类的封装,并通过掩码结构体的方式实 现了类成员的保护.这一部分,我 ...
- DAY7-面向对象之继承与派生
一.初识继承 什么是继承 继承是一种创建新类的方式,新建的类可以继承一个或多个父类(python支持多继承),父类又可称为基类或超类,新建的类称为派生类或子类. 子类会“”遗传”父类的属性,从而解决代 ...
- 04737_C++程序设计_第6章_继承和派生
例6.1 使用默认内联函数实现单一继承. #include<iostream> using namespace std; class Point { private: int x, y; ...
- C++学习之路—继承与派生(三):多重继承与虚基类
(根据<C++程序设计>(谭浩强)整理,整理者:华科小涛,@http://www.cnblogs.com/hust-ghtao转载请注明) 多重继承是指一个派生类有两个或多个基类.例如,有 ...
- C/C++基础知识总结——继承与派生
1. 类的继承与派生 1.1 派生类的定义 (1) 定义规范 class 派生类名: 继承方式 基类1名, 继承方式 基类2名... { ...派生类成员声明; }; (2) 从以上形式上看可以多继承 ...
- C++学习笔记44:继承与派生
类的组合,类的继承 类的组合(汽车类,轮子类,此时可以把轮子类组合到汽车类:) 类的继承(交通工具类,汽车类,此时汽车类可以派生自交通工具类:) 组合:常用描述has a.. 继承:常用描述is a ...
- C++复习:继承与派生
1继承概念 面向对象程序设计有4个主要特点:抽象.封装.继承和多态性.说了类和对象,了解了面向对象程序设计的两个重要特征一数据抽象与封装,已经能够设计出基于对象的程序,这是面向对象程序设计的基础. 要 ...
- Python入门之面向对象之类继承与派生
本章内容 一.继承 二.抽象类 三.继承的实现原理 ======================================================= 一.继承 1. 继承的定义 继承是一 ...
- C++课程小结 继承与派生
单继承与多重继承的区别 单继承:一个子类(派生类)只有一个父类(只由一个基类派生而成) 多继承:一个子类(派生类)有多个父类(由多个基类派生而成) 派生类的构成 (1) 从基类继承过来的成员(包括数据 ...
随机推荐
- Mybatis generator 逆向生成代码
Mybatis generator 逆向生成代码 简单介绍 本文介绍用mybatis逆向生成javaben dao接口 1.创建maven项目 创建相应的包 附上项目创建完成的图片 然后在pom.xm ...
- Dubbo与Zookeeper、Spring整合使用 maven+springmvc+dubbo+zookeeper
为什么要用dubbo? 还是让官方来解释吧: http://dubbo.io/User+Guide-zh.htm http://dubbo.io/ 一般 nginx+tomcat | - ...
- Django组件——分页器(paginator)
一.视图层 from django.shortcuts import render # Create your views here. from .models import Book from dj ...
- Ruby在Windows上安装
Ruby在Windows下安装windows下的rails2.02环境搭建 ROR本地安装的技术含量比较高的 一.安装Ruby1.下载Ruby()安装包双击安装,安装过程中注意选中"Enab ...
- ThinkPHP5专题
TinkPHP5中 1. model中select()后的查询结果是对象而不是数组 2. model中 假如有 $result=$this->field($fields)->where($ ...
- MATLAB/Excel-如何将Excel数据导入MATLAB中
在使用MATLAB对矩阵进行数据处理时,为了方便编辑与修改,常常需要先将数据录入到Excel中,然后再将其导入到MATLAB中参与矩阵运算.本文在MATLAB 2013a和Office 2013环境下 ...
- 保存Google、Bing翻译的语音
以Chrome浏览器+google翻译为例,bing的下载步骤也类似 1.打开google翻译页面(translate.google.com),输入一段文本,如下图 2.可以看到,右侧已经翻译好了,这 ...
- 真的有用吗?(GitHub)
为什么要新建一个GitHub账号 一个程序员不知道GitHub,那我就笑笑,呵呵哒.什么是GitHub呢? 就我知道的git,谈一下.Git是一个版本控制软件,这个软件最初是Linux之父林纳斯. ...
- Android(java)学习笔记2:继承Thread类创建线程类
1. 继承Thread类 创建线程类: package cn.itcast_02; /* * 该类要重写run()方法,为什么呢? * 不是类中的所有代码都需要被线程执行的. * 而这个时候,为了区分 ...
- ACM-ICPC(10 / 10)——(完美世界2017秋招真题)
今天学了莫比乌斯反演,竟然破天荒的自己推出来了一个题目!有关莫比乌斯反演的题解,和上次的01分数规划的题解明天再写吧~~~ 学长们都在刷面试题,我也去试了试,120分钟,写出6题要有一点熟练度才行.先 ...