【问题描述】
定义一个Teacher(教师)类(教师号,姓名,性别,薪金)和一个Student(学生)类(学号,姓名,性别,成绩),二者有一部分数据成员是相同的,num(号码),name(姓名),sex(性别)。编写程序,将一个Student对象(学生)转换为Teacher(教师)类,只将以上3个相同的数据成员移植过去。可以设想为: 一位学生大学毕业了,留校担任教师,他原有的部分数据对现在的教师身份来说仍然是有用的,应当保留并成为其教师数据的一部分。
Input
一个教师的信息和一个学生的信息
Output
学生的信息和学生转换为教师后的信息
Sample Input
10001 Li f 1234.5
20010 Wang m 89.5
Sample Output
student1:
num:20010
name:Wang
sex:m
score:89.50
teacher2:
num:20010
name:Wang
sex:m
pay:1500.00
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <string>
#include <iomanip>
using namespace std;
class Student
{
public:
Student()//构造函数
{
}
void display()
{
cout << "num:" << num << endl << "name:" << name << endl << "sex:" << sex << endl << "score:" << score << endl;
}
Student(int n, string na, char s, float sc)
{
num = n;
name=na;
sex = s;
score = sc;
}
int num;
string name;
char sex;
float score;
};
class Teacher
{
public:
Teacher()
{
}
Teacher(int n, string na, char s, float p)
{
num = n;
name=na;//字符串直接赋值即可,如果是char name[20],则strcpy(name,na.c_str),需要有#include<string.h>头文件
sex = s;
pay = p;
}
void setpay(float p)
{
pay = p;
}
void display()
{
cout << "num:" << num << endl << "name:" << name << endl << "sex:" << sex << endl << "pay:" << pay << endl;
}
Teacher(Student &s)
{
num = s.num;
name = s.name;
sex = s.sex;
}
private:
int num;
string name;
char sex;
float pay;
};
int main()
{
cout << setiosflags(ios::fixed);
cout << setprecision(2);
int num;
string name;
char sex;
float score;
float pay;
cin >> num >> name >> sex >> pay;
Teacher teacher1(num, name, sex, pay);
cin >> num >> name >> sex >> score;
Student student1(num, name, sex, score);
cout << "student1:" << endl;
student1.display();
Teacher teacher2 = Teacher(student1);
teacher2.setpay(1500);
cout << "teacher2:" << endl;
teacher2.display();
return 0;
system("pause");
}