谭浩强C++课后习题37——学生类转换为教师类(转换构造函数)
题目描述:定义一个Teacher(教师)类和一个Student(学生)类,二者有一部分数据成员是相同的,例如num(号码),name(姓名),sex(性别)。编写程序,将一个Student对象(学生)转换为Teacher(教师)类,只将以上3个相同的数据成员移植过去。可以设想为:一位学生大学毕业了,留校担任教师,他原有的部分数据对现在的教师身份来说仍然是有用的,应保留并成为其教师数据的一部分。
Student类只增加一个数据成员score(成绩),Teacher类只增加一个数据成员pay(工资)。按题目要求编程。
#include<iostream>
using namespace std;
class Student {
private:
int num;
string name;
string sex;
double score;
public:
Student(int n, string na, string s, double sc) :num(n), name(na), sex(s), score(sc) {}
int getNum() { return num; }
string getName() { return name; }
string getSex() { return sex; }
void display() {
cout << "学号:" << num << endl;
cout << "姓名:" << name << endl;
cout << "性别:" << sex << endl;
cout << "分数:" << score << endl;
}
};
class Teacher {
private:
int num;
string name;
string sex;
double pay;
public:
Teacher(int n, string na, string s, double p) :num(n), name(na), sex(s), pay(p) {}
Teacher(Student& s) {
num = s.getNum();
name = s.getName();
sex = s.getSex();
pay = 1500;
}
void display() {
cout << "学号:" << num << endl;
cout << "姓名:" << name << endl;
cout << "性别:" << sex << endl;
cout << "工资:" << pay << endl;
}
};
int main() {
Student s(1, "aaa", "男", 89);
cout << "学生信息:" << endl;
s.display();
cout << endl;
cout << "转为教师:" << endl;
Teacher(s).display();
cout << endl;
return 0;
}
运行测试结果: