hw13_03.cpp

3、派生与继承:虚继承
(a) 设计 Employee 类,包括:
两个保护型数据成员:string name和int age,分别表示姓名和年龄
一个带两个形参的构造函数Employee(const string & name, int age),用于初始化数据成员
成员函数void Display(),输出所有信息(即姓名和年龄)
(b) 在 Employee 基础上定义派生类(以虚继承方式)Saleman,包括:
新增保护型数据成员:int sales,表示销售额
一个带三个形参的构造函数Saleman(const string & name, int age, int sales)
成员函数void Display(),输出所有信息(即姓名、年龄和销售额)
(c) 在 Employee 基础上定义派生类(以虚继承方式)Manager,包括:
新增保护型数据成员:int members,表示管理的人数
一个带三个形参的构造函数Manager(const string & name, int age, int members)
成员函数void Display(),输出所有信息(即姓名、年龄和管理人数)
(d) 在 Saleman 和 Manager 基础上定义派生类SaleManager,包括:
一个带四个形参的构造函数
SaleManager(const string & name, int age, int sales, int members)
成员函数voidDisplay(),输出所有信息(即姓名、年龄、管理人数和销售额)
实现这四个类,并在主函数中测试:创建一个SaleManager,姓名: Zhang San, 年龄: 32,
销售额: 128, 管理人数: 8。在屏幕上输出该销售经理的相关信息。
(程序取名为hw13_03.cpp)
#include <iostream>
#include <string> 

using namespace std;

class Employee
{
public:
    Employee(const string & name,int age) {
        this->name = name;
        this->age = age;
    }
    void Display() {
        cout<< "Name: "<<name<<endl;
        cout<< "Age: "<<age<<endl;
    }
protected:
    string name;
    int age;
};

class Saleman: virtual public Employee
{
public:
    Saleman(const string & name, int age, int sales):
    Employee(name,age) {
        this->sales = sales;
    }
    void Display() {
        Employee::Display();
        cout<< "Sales: "<<sales<<endl;
    }
protected:
    int sales;
};

class Manager: virtual public Employee
{
public:
    Manager(const string & name, int age, int members):
    Employee(name,age) {
        this->members = members;
    }
    void Display() {
        Employee::Display();
        cout<< "Members: "<<members<<endl;
    }
protected:
    int members;
};

class SaleManager: public Saleman, public Manager
{
public:
    SaleManager(const string & name, int age, int sales, int members):
    Employee(name,age),
    Saleman(name,age,sales),
    Manager(name,age,members) {}
    void Display() {
        Saleman::Display();
        cout<< "Members: "<<members<<endl;
    }
};

int main()
{
	SaleManager x("Zhang San", 32, 128, 8);
	x.Display();	 

	return 0;
}

发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注

滚动至顶部