如何在c ++中使用组合的多重继承?

时间:2017-07-06 10:58:32

标签: c++

我对如何使用带继承的组合感到困惑。我根据自己的理解写了一个简单的例子。请帮帮我 1)如果上述代码是否正确? 2)我的多重继承实现是否正确? 3)我在Employees类中进行继承和组合。这是对的吗?

class address
{
private:

public:

    struct MyStruct
    {
        int houseno;
        string colony;
        string city;    
    };

    MyStruct m;
    //shows the address
    void get_address()
    {
        cout << m.houseno;
        cout<<m.colony;
        cout << m.city;
    }
};
class telephoneNo
{
private:
    string c;
public:

    // takes the telephoneNo of the employee from user and pass to local variable
    void set_telephone(string d)
    {
        c = d;
    }
    void get_telephone()
    {
        cout << c;
    }
};
//multiple level inheritance
class employee :public address, public telephoneNo  
{
    private:
        string name;
    public:
    address obj;       //composition
    telephoneNo obj2;  // composition

    void employee_name(string a)
    {
        name = a;
    }
    void show_emplyeeDetail()
    {
        cout << "Employee's Name is: ";
        cout << name<<endl;
        cout << "Employee's Address is: ";
        obj.get_address();
        cout<<endl;
        cout << "Employee's Telephnoe no is: ";
        obj2.get_telephone();
        cout<< endl;
    }
};
void main()
{

emp.obj; 
    cout << "Enter Name of employee " << endl;
    cin >> nameInput;
    cout << "-----------Enter address of employee----------- "<<endl;
    cout << "Enter house: ";
    cin >> emp.obj.m.houseno;  //passing parameters to the struct
    cout << "Enter colony : ";
    cin >> emp.obj.m.colony;   
    cout << "Enter city: ";
    cin >> emp.obj.m.city;
    cout << "Enter telephone of employee: ";
    cin >> telephoneInput;

    emp.employee_name(nameInput);
    emp.obj2.set_telephone(telephoneInput);
    cout << "-------------Employee's Details are as follows------------ " << endl;
    emp.show_emplyeeDetail();
}

1 个答案:

答案 0 :(得分:0)

您的员工“是”地址和电话号码 - 这是多重继承

class employee :public address, public telephoneNo 

在主要内容中,您可以为任何员工访问两个基类的公共字段和方法,例如

employee employee1; 
employee1.get_address();

另一方面,员工“有”一个地址和一个电话号码 - 这就是组成。

employee1.obj.get_address();

请注意,您的员工的两个地址和电话号码是严格分开的,可以(将)包含不同的内容。

但最好的建议是从一本关于C ++的好初学者书开始。