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.测试截图
(。・∀・)ノ
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架