设计一个基类Person,包括姓名、性别和年龄及展示方法display,由它派生出学生类Student和教师类Teacher

设计一个基类Person,包括姓名、性别和年龄及展示方法display,由它派生出学生类Student和教师类Teacher,学生类增加学号、年级、专业等属性及展示方法display,教师类增加教师号、职称、工资等属性和展示方法display。编写主函数对设计的类进行测试。以上类中涉及的字符串都很短,使用字符数组存储即可。不需要动态申请内存。

#include<iostream>
using namespace std;
class Person
{
public:
	char m_nName[20];//字符数组
	char m_nSex[5];
	int Age;
	Person(const char* name, const char* sex, int age)    //构造Person
	{
		strcpy_s(m_nName, strlen(name) + 1, name);//赋初始值
		strcpy_s(m_nSex, strlen(sex) + 1, sex);
		Age = age;
	}
	void Display()//Display函数
	{
		cout<< m_nName<<" \t"<<m_nSex<< " \t"<< Age<<endl;
	}
	~Person(){}
};
class Student:public Person
{
	char m_nId[20];        //Student类特有属性定义
	char m_nGrade[20];
	char m_nMajor[20];
public:
	Student(const char* name, const char* sex, int age, const char* id, const char* grade, const char* major) :Person(name, sex, age)    //构造Student类需先构造其父类Person
	{
		strcpy_s(m_nId, strlen(id) + 1, id);
		strcpy_s(m_nGrade, strlen(grade) + 1, grade);
		strcpy_s(m_nMajor, strlen(major) + 1, major);
	}
	void Display()    //子类Student Display方法覆盖父类Person Display方法
	{
		cout << m_nName << "\t" << m_nSex << "\t" << Age << "\t" << m_nId << "\t" << m_nGrade << "\t" << m_nMajor << endl;
	}
	~Student() {}
};
class Teacher :public Person
{
	char m_nTeachid[20];
	char m_nTitle[20];
	char m_nSalary[20];
public:
	Teacher(const char* name, const char* sex, int age, const char* teachid, const char* title, const char* salary) :Person(name, sex, age)
	{
		strcpy_s(m_nTeachid, strlen(teachid) + 1, teachid);
		strcpy_s(m_nTitle, strlen(title) + 1, title);
		strcpy_s(m_nSalary, strlen(salary) + 1, salary);
	}
	void Display()
	{
		cout <<m_nName << "\t" << m_nSex << "\t" << Age << "\t" << m_nTeachid << "\t" << m_nTitle << "\t" << m_nSalary << endl;
	}
	~Teacher() {}
};
int main()
{
	Person P1("张三","男",18);    
	P1.Display();
	Student S1("小明 ", "男", 19, "201703 ", "2017级", "会计学");
	S1.Display();
	Teacher T1("刘晓燕", "女", 59, "T123", "教授", "保密");
	T1.Display();
	return 0;
}

跑一下试试:

ok,没有问题!

  • 10
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值