无 string
题目描述:ios
(1)定义人员类Person:
公有成员:姓名(Name);
保护成员:性别(Gender),年龄(Age); 数据结构
构造函数和析构函数 函数
(2) 从人员类Person派生学生记录类StudentRecord:
添加公有成员:学号(Number),班级(ClassName),
添加静态公有成员:学生总人数(TotalCount);
添加保护成员:平均成绩(Score);
实现构造函数和析构函数。
(3) 从人员类Person派生教师记录类TeacherRecord:
添加公有成员:学院(CollegeName),系(DepartmentName);
添加保护成员:教龄(Year);
实现构造函数和析构函数。 spa
(4)从学生记录类StudentRecord和教师记录类TeacherRecord派生学生助教类TeachingAssistant:
添加公有成员:辅导课程(LectureName);
实现公有函数:显示人员信息(Show),屏幕打印 姓名,性别,年龄,学号,班级,学生总人数,平均成绩,学院,系,教龄,辅导课程。
实现构造函数和析构函数。为检验类间结构设计是否正确,设计函数void SetName(String name)实现更改一名助教的姓名的功能。 设计
建立一个助教类的对象 code
助教
姓名 性别 年龄 学号 班级 平均成绩 学院 系 教龄 辅导课程
郑七 男 22 2010123 软20101 89 信息 软件 1 数据结构
显示其信息。 对象
调用更改姓名的函数,更改其姓名为“郑八”,并再次显示其信息。 blog
无 string
显示构造的信息和更改前和更改后的助教信息 io
各种的构造函数和析构函数都有输出。
调用公有函数Show,以分别显示各个记录的人员信息。
在派生助教类时,使用虚基类。
#include <iostream> #include <string> using namespace std; class Person { protected: string Gender; int Age; public: string Name; Person(string _Name="郑七",string _Gender="男",int _Age=22) { Name=_Name; Gender=_Gender; Age=_Age; cout<<"Person"<<Name<<"constructed"<<endl; } ~Person() { cout<<"Person"<<Name<<"destructed"<<endl; } }; class StudentRecord:virtual public Person { public: int Number; string ClassName; int TotalCount; protected: int Score; StudentRecord(string _Name="郑七",string _Gender="男",int _Age=22,int _Number=2010123,string _ClassName="软20101",int _TotalCount=1,int _Score=89):Person(_Name,_Gender,_Age),TotalCount(_TotalCount) { Number=_Number; ClassName=_ClassName; Score=_Score; cout<<"Student"<<Name<<"constructed"<<endl; } ~StudentRecord() { cout<<"Student"<<Name<<"destructed"<<endl; } }; class TeacherRecord :virtual public Person { public: string CollegeName; string DepartmentName; protected: int Year; TeacherRecord(string _Name="郑七",string _Gender="男",int _Age=22,int _Number=2010123,string _CollegeName="信息",string _DepartmentName="软件",int _Year=1):Person(_Name,_Gender,_Age) { { CollegeName=_CollegeName; DepartmentName=_DepartmentName; Year=_Year; cout<<"teacher"<<Name<<"constructed"<<endl; } } ~TeacherRecord() { cout<<"teacher"<<Name<<"destructed"<<endl; } }; class TeachingAssistant:virtual public StudentRecord,virtual public TeacherRecord { public: string LectureName; TeachingAssistant(string _LectureName="数据结构",string _Name="郑七",string _Gender="男",int _Age=22,int _Number=2010123,string _CollegeName="信息",string _DepartmentName="软件",int _Year=1,string _ClassName="软20101",int _TotalCount=1,int _Score=89):StudentRecord(_Name, _Gender, _Age, _Number, _ClassName, _TotalCount, _Score),TeacherRecord(_Name,_Gender,_Age,_Number,_CollegeName,_DepartmentName,_Year) { LectureName=_LectureName; cout<<"teachingassistant"<<Name<<"constructed"<<endl; } void Print() { cout<<"Name:"<<Name<<" "; cout<<"Gender:"<<Gender<<" "; cout<<"Age:"<<Age<<" "; cout<<"Number:"<<Number<<" "; cout<<"ClassName:"<<ClassName<<" "; cout<<"TotalCount:"<<TotalCount<<" "; cout<<"Score:"<<Score<<" "; cout<<"CollegeName:"<<CollegeName<<" "; cout<<"DepartmentName:"<<DepartmentName<<" "; cout<<"Year:"<<Year<<" "; cout<<"LectureName:"<<LectureName<<endl; } void SetName(string _Name) { Name=_Name; } ~TeachingAssistant() { cout<<"teachingassistant"<<Name<<"destructed"<<endl; } }; int main() { TeachingAssistant a1; a1.Print(); a1.SetName("郑八"); a1.Print(); return 0; }