C++ 类的多层继承与虚类 练习题

【问题描述】

定义一个员工类Employee,有数据成员姓名,编号。定义一个销售员继承自员工类Sales,工资为销售额的提成10%,定义一个经理类Manager,固定工资8000,定义一个销售经理类,继承自销售员类和经理类,工资为固定工资5000加销售额的提成5%。每个类均有display()函数输出信息,编写主函数测试。主函数中定义一个销售经理对象,销售额为100000,输出信息。

【输入形式】

程序参考的输入(第一行为提示文字):

Input id name and sale:

M001 zhangsan 100000

【输出形式】

程序参考的输出结果如下:

ID:M001

Name:zhangsan

Salary:10000

#include  <iostream>
using  namespace  std;
class  Employee
{
public:
    Employee(string  id,string  name):id(id),name(name){}
    void  display()
    {
        cout<<"ID:"<<id<<endl;
        cout<<"Name:"<<name<<endl;
    }
protected:
    string  id,name;
};
class Sales : virtual public Employee
{
public:
    Sales(string  id, string  name, float sale): Employee(id,name)
    {
        this->id = id;
        this->name = name;
        this->sale = sale;
    }
    void display()
    {
        cout << "ID:" << id << endl;
        cout << "Name:" << name << endl;
        cout << "salary:" << sale*0.1 << endl;
    }
protected:
    float sale;

};


class Manager : virtual public Employee
{
public:
    Manager(string id,string name, float salary): Employee(id,name),salary(salary){}
    void display()
    {
    }
protected:
    float salary=8000;
};

class SalesManager : public Manager, public Sales
{
public:
    SalesManager(string  id, string  name, float sale): Sales(id, name,sale), Manager(id,name,5000),Employee(id,name)
    {
        this->id = id;
        this->name = name;
        this->salary = salary + sale*0.05;
    }
    void display()
    {
        cout << "ID:" << id << endl;
        cout << "Name:" << name << endl;
        cout << "Salary:" << salary << endl;
    }
};

int  main()
{
    string  id,name;
    float  sale;
    cout<<"Input  id  name  and  sale:"<<endl;
    cin>>id>>name>>sale;
    if(sale<0)
    {
        cout<<"Input  Error!"<<endl;
        return  0;
    }
    SalesManager  sm(id,name,sale);
    sm.display();
    return  0;
}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值