5.19设计一个虚基类base,包含姓名、年龄私有数据成员以及相关成员函数,由它派生出领导类leader包含职务和部门私有成员以及相关的成员函数;再有base派生出工程师类engieer,包含职称和专业私有数据成员以及相关成员函数;然后由leader和engieer派生出主任工程师类chairman。
#include<iostream>
#include<string>
using namespace std;
class base{
public:
base(string n,int a)
{
name=n;
age=a;
}
void show1()
{
base::show();
}
void show()
{
cout<<"name:"<<name<<endl;
cout<<"age:"<<age<<endl;
}
private:
string name;
int age;
};
class leader:virtual public base{
public:
leader(string n,int a):base(n,a)
{
base::show();
cout<<"past:";
cin>>past;
cout<<"department:";
cin>>department;
}
void show1()
{
base::show();
}
void show()
{
cout<<"past:"<<past<<endl;
cout<<"department:"<<department<<endl;
}
private:
string past;
string department;
};
class engieer :virtual public base{
public:
engieer(string n,int a):base(n,a)
{
cout<<"title:";
cin>>title;
cout<<"major:";
cin>>major;
}
void show()
{
cout<<"title:"<<title<<endl;
cout<<"major:"<<major<<endl;
}
private:
string title;
string major;
};
class chairman :public leader,public engieer{
public:
chairman(string n,int a):base(n,a),leader(n,a),engieer(n,a)
{
base::show();
}
void show()
{
base::show();
leader::show();
engieer::show();
}
};
int main()
{
chairman as("liming",24);
as.show();
return 0;
}