文章目录
二、编写一个学生与教师类。
- 学生数据有编号(int)、姓名(string)、性别(enum Gender{Male, Female})、学院(string)和成绩(int)
- 教师数据有编号(int)、姓名(string)、性别(enum Gender)、职称(string)和部门(string)。
要求将编号、姓名、性别设计成一个Person类,作为学生类Student和教师类Teacher的基类,并完成相应的构造函数。Print()主要用于打印各个类的数据成员。(注意:所有字符类型采用string类型,避免深拷贝的问题。)
代码
#include <iostream>
using namespace std;
enum Gender{Male, Female};//枚举类型
ostream& operator<<(ostream& os, Gender gender){
if(gender == Male)
os << "Male";
else
os << "Female";
return os;
}
class Person{
public:
Person(){ }
Person(int number, string name, Gender gender){
number_ = number;
name_ = name;
gender_ = gender;
}
void Print(){
cout << "name:" << name_ << " gender:" << gender_ << "\nnumber:" << number_ << "\n";
}
private:
Gender gender_;
int number_;
string name_;
};
class Student:public Person{//学生类
public:
Student(){ }
Student(int number, string name, Gender gender, string academy, int score):person_(number, name, gender){
academy_ = academy;
score_ = score;
}
void Print(){
person_.Print();
cout << "academy:" << academy_ << "\nscore:" << score_ << "\n\n";
}
private:
Person person_;
int score_;
string academy_;
};
class Teacher:public Person{//教师类
public:
Teacher(){ }
Teacher(int number, string name, Gender gender, string rank, string department):person_(number, name, gender){
rank_ = rank;
department_ = department;
}
void Print(){
person_.Print();
cout << "department:" << department_ << "\nrank:" << rank_ << "\n\n";
}
private:
string rank_;
string department_;
Person person_;
};
int main(){
Person person(1007, "Spinoza", Male);
Student student(1007, "Descartes", Male, "Information Technology", 100);
Teacher teacher(1007, "Leibniz", Male, "Professor", "Teaching Affairs");
person.Print();
student.Print();
teacher.Print();
return 0;
}