【C++练习】设计虚基类base,包含姓名、年龄及相关的成员函数

设计虚基类base,包含姓名、年龄及相关的成员函数。由他派生领导类leader,新增职务、部门及相关成员函数。在由base派生工程师类engineer,新增职称、专业及相关成员函数。最后由leader和engineer类共同派生出主任工程师chairman。请编程实现这几个类及他们之间的派生关系,并设计测试代码进行测试。

/*
设计虚基类base,包含姓名、年龄及相关的成员函数。
由他派生领导类leader,新增职务、部门及相关成员函数。
在由base派生工程师类engineer,新增职称、专业及相关成员函数。
最后由leader和engineer类共同派生出主任工程师chairman。
请编程实现这几个类及他们之间的派生关系,并设计测试代码进行测试。
*/
#include <iostream>
#include <stdlib.h>
#include <string>
using namespace std;

class base
{
protected:
	string name;
	int age;
public:
	base(string name1, int age1);
	void show();
};
base::base(string name1, int age1)
{
	name = name1;
	age = age1;
}
void base::show()
{
	cout << "姓名:" << name << endl;
	cout << "年龄:" << age << endl;
}

class leader :virtual public base //领导类
{
protected:
	string post;//职务
	string dept;//部门
public:
	leader(string name1, int age1, string post1, string dept1);
	void show();
};
leader::leader(string name1, int age1, string post1, string dept1) :base(name1, age1)
{
	post = post1;
	dept = dept1;
}
void leader::show()
{
	cout << "领导类:" << endl;
	base::show();
	cout << "职务:" << post << endl;
	cout << "部门:" << dept << endl;
}

class engineer :virtual public base //工程师类
{
protected:
	string title;//职称
	string major;//专业
public:
	engineer(string name1, int age1, string title1, string major1);
	void show();
};
engineer::engineer(string name1, int age1, string title1, string major1) :base(name1, age1)
{
	title=title1;
	major = major1;
}
void engineer::show()
{
	cout << "工程师类:" << endl;
	base::show();
	cout << "职称:" << title << endl;
	cout << "专业:" << major << endl;
}

class chairman :public leader,public engineer//主任工程师类
{
public:
	chairman(string name1, int age1, string post1, string dept1, string title1, string major1);
	void show();
};
chairman::chairman(string name1, int age1, string post1, string dept1, string title1, string major1) :base(name1, age1), leader(name1, age1, post1, dept1), engineer(name1, age1, title1, major1)
{

}
void chairman::show()
{
	cout << "主任工程师类:" << endl;
	base::show();
	cout << "职务:" << post << endl;
	cout << "部门:" << dept << endl;
	cout << "职称:" << title << endl;
	cout << "专业:" << major << endl;
}

int main()
{
	leader a("张三", 30, "部门经理", "管理部");
	engineer b("李四", 25, "初级工程师", "土木工程");
	chairman c("王五",45, "总经理","产品部", "高级工程师", "建筑设计");

	a.show();
	cout << endl;
	b.show();
	cout << endl;
	c.show();

	system("PAUSE");
	return 0;
}

  • 4
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值