设计雇员类CEmployee,然后使用继承设计管理者类CManager

编写两个类,要求使用继承

雇员:姓名,入职年份,部门,底薪

               计算月薪,打印信息

管理者:级别

                  打印信息

编写主函数测试两个类

参考GPT和自己的思路:

好的,针对这个问题,我可以给你一些建议和指导:

  1. 首先,你需要设计一个基类CEmployee,其中包含姓名、入职年份、部门和底薪这些成员变量,然后再定义一个计算月薪的虚函数和一个打印信息的成员函数。具体可以参考以下代码:
class CEmployee
{
public:
    CEmployee(string name, int year, string department, double salary)
    {
        m_strName = name;
        m_iYear = year;
        m_strDepartment = department;
        m_dSalary = salary;
    }
    
    virtual double getMonthlySalary() // 计算月薪的虚函数
    {
        return m_dSalary / 12;
    }
    
    void printInfo() // 打印员工信息的成员函数
    {
        cout << "Name: " << m_strName << "\n";
        cout << "Year of Entry: " << m_iYear << "\n";
        cout << "Department: " << m_strDepartment << "\n";
        cout << "Salary: " << m_dSalary << "\n";
        cout << "Monthly Salary: " << getMonthlySalary() << "\n";
    }
    
private:
    string m_strName;
    int m_iYear;
    string m_strDepartment;
    double m_dSalary;
};
  1. 然后,你需要设计一个继承自CEmployee的CManager类,其中除了继承基类的成员变量和函数外,还包含一个级别成员变量和一个打印信息的成员函数。具体可以参考以下代码:
class CManager : public CEmployee
{
public:
    CManager(string name, int year, string department, double salary, int level) : CEmployee(name, year, department, salary)
    {
        m_iLevel = level;
    }
    
    void printInfo() // 打印经理信息的成员函数
    {
        CEmployee::printInfo(); // 先调用基类的printInfo函数打印共同的信息
        cout << "Level: " << m_iLevel << "\n";
    }
    
private:
    int m_iLevel;
};
  1. 最后,在主函数中创建CEmployee和CManager的对象,并调用它们的成员函数进行测试,具体可以参考以下代码:
int main()
{
    CEmployee employee("Tom", 2010, "Sales", 50000);
    employee.printInfo();
    
    cout << "\n";
    
    CManager manager("Jerry", 2008, "Marketing", 80000, 2);
    manager.printInfo();
    
    return 0;
}

以上就是关于设计雇员类CEmployee和管理者类CManager,并使用继承进行设计的问题的回答。希望能够对你有所帮助。