1002. 交通工具

Description

 根据以下描述 完成以下4个类的定义,抽象类Vehicle拥有run方法,run方法是交通工具启动时执行的方法。

Car、Motorbike、Bicycle三个类均继承Vehicle交通工具类。

Car的启动时,显示器会输出一行信息:Car run

Motorbike的启动时,显示器会输出一行信息:Motorbike run

Bicycle的启动时,显示器会输出一行信息:Bicycle run


代码:


#include <iostream>
using namespace std;
class Vehicle
{
public:
virtual void run(){};
};
class Car:public Vehicle
{
public:
void run()
{
cout << "Car run" << endl;
}
};
class Motorbike:public Vehicle
{
public:
void run()
{
cout << "Motorbike run" << endl;
}
};
class Bicycle:public Vehicle
{
public:
void run()
{
cout << "Bicycle run" << endl;
}
};


注:virtual void run()会报错,应改为virtual void run(){};

定义一个抽象类Role,表示角色,用于描述现实生活中雇员、经理等继承体系结构,并实现相应角色人员的多态性信息输出。具体要求如下: (1)抽象类Role中至少包含姓名name(字符数组char[12]类型)、年龄age(int类型)、性别sex(char类型,男性为'M'而女性为'F')等数据成员; (2)抽象类Role中至少定义两个构造函数,用于构造:a)只给定姓名;b)只给定姓名和年龄的角色对象,年龄的默认值为21,性别的默认值为男性’M’;要求构造函数中必须体现出this指针的用法。 (3)抽象类Role中具有一个纯虚函数display(),可用于显示特定角色的信息,该方法没有返回值。 (4)从角色类Role派生出一个雇员类Employee。要求: a)雇员类具有Role类的所有成员(构造函数和静态方法除外),并新增了普通数据成员工资salary(double类型)和一个静态数据成员职工编号ID(int型); b)雇员类Employee同样拥有至少两个构造函数; c)雇员类覆盖了基类Role的display()方法,可用于显示雇员的信息; d)雇员类新增一个常量成员函数getSalary(),可用于返回雇员的工资。 (5)定义经理类Manager继承自Employee类。要求: a)经理类Manager新增了数据成员vehicle(字符数组char[20]类型),表示经理所使用的车辆; b)至少为经理类添加一个构造函数,车辆vehicle的默认值为"大众"; c)经理类Manager覆盖了基类的display()方法,用于显示经理的信息。 具有上述功能的角色类及其派生类的测试代码及相应输出结果如下: int Employee::ID=1000;//职工编号(静态数据成员) void main(){ Employee student("张迪", 1200); student.display(); //L1 Manager manager("陈真", 6000, "宝马"); manager.display(); //L2 Role *p1 = &student; p1->display(); //L3 Role &rp1 = student; rp1.display(); //L4 Role *p2 = &manager; p2->display(); //L5 Role &rp2 = manager; rp2.display(); //L6 }  程序输出结果: L1:职工编号:1001, 姓名:张迪, 年龄:21, 性别:M, 工资:1200 L2:职工编号:1002, 姓名:陈真, 年龄:21, 性别:M, 工资:6000, 交通工具:宝马 L3:职工编号:1002, 姓名:张迪, 年龄:21, 性别:M, 工资:1200 L4:职工编号:1002, 姓名:张迪, 年龄:21, 性别:M, 工资:1200 L5:职工编号:1002, 姓名:陈真, 年龄:21, 性别:M, 工资:6000, 交通工具:宝马 L6:职工编号:1002, 姓名:陈真, 年龄:21, 性别:M, 工资:6000, 交通工具:宝马
最新发布
12-20
 题目描述 定义一个抽象类Role,表示角色,用于描述现实生活中雇员、经理等继承体系结构,并实现相应角色人员的多态性信息输出。具体要求如下: (1)抽象类Role中至少包含姓名name(字符数组char[12]类型)、年龄age(int类型)、性别sex(char类型,男性为'M'而女性为'F')等数据成员; (2)抽象类Role中至少定义两个构造函数,用于构造:a)只给定姓名;b)只给定姓名和年龄的角色对象,年龄的默认值为21,性别的默认值为男性’M’;要求构造函数中必须体现出this指针的用法。 (3)抽象类Role中具有一个纯虚函数display(),可用于显示特定角色的信息,该方法没有返回值。 (4)从角色类Role派生出一个雇员类Employee。要求: a)雇员类具有Role类的所有成员(构造函数和静态方法除外),并新增了普通数据成员工资salary(double类型)和一个静态数据成员职工编号ID(int型); b)雇员类Employee同样拥有至少两个构造函数; c)雇员类覆盖了基类Role的display()方法,可用于显示雇员的信息; d)雇员类新增一个常量成员函数getSalary(),可用于返回雇员的工资。 (5)定义经理类Manager继承自Employee类。要求: a)经理类Manager新增了数据成员vehicle(字符数组char[20]类型),表示经理所使用的车辆; b)至少为经理类添加一个构造函数,车辆vehicle的默认值为"大众"; c)经理类Manager覆盖了基类的display()方法,用于显示经理的信息。 具有上述功能的角色类及其派生类的测试代码及相应输出结果如下: int Employee::ID=1000;//职工编号(静态数据成员) void main(){ Employee student("张迪", 1200); student.display(); //L1 Manager manager("陈真", 6000, "宝马"); manager.display(); //L2 Role *p1 = &student; p1->display(); //L3 Role &rp1 = student; rp1.display(); //L4 Role *p2 = &manager; p2->display(); //L5 Role &rp2 = manager; rp2.display(); //L6 }  程序输出结果: L1:职工编号:1001, 姓名:张迪, 年龄:21, 性别:M, 工资:1200 L2:职工编号:1002, 姓名:陈真, 年龄:21, 性别:M, 工资:6000, 交通工具:宝马 L3:职工编号:1002, 姓名:张迪, 年龄:21, 性别:M, 工资:1200 L4:职工编号:1002, 姓名:张迪, 年龄:21, 性别:M, 工资:1200 L5:职工编号:1002, 姓名:陈真, 年龄:21, 性别:M, 工资:6000, 交通工具:宝马 L6:职工编号:1002, 姓名:陈真, 年龄:21, 性别:M, 工资:6000, 交通工具:宝马
12-09
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值