【问题描述】定义一个教师类(Teacher),包含数据成员:编号id、姓名name、性别sex和工资pay;定义一个学生类(Student),包含数据成员:编号id、姓名name、性别sex和成绩score。请根据主程序完成两个类的实现,并把一个学生对象转换为老师对象,只将以上三个相同的数据成员移植过去。
主函数代码如下:
int main()
{
Teacher teacher1(10001,“Li”,‘f’,1234.5),teacher2;
Student student1(20010,“Wang”,‘m’,89.5);
cout<<“student1:”<<endl;
student1.display();
teacher2=Teacher(student1);
cout<<“teacher2:”<<endl;
teacher2.display();
return 0;
}
【输入说明】无输入
【输出样例】
student1:
num:20010
name:Wang
sex:m
score:89.5
teacher2:
num:20010
name:Wang
sex:m
pay:1500
【样例说明】teacher2的工资值可任意给定。
#include <iostream>
using namespace std;
class Student;//对Student类提前声明
class Teacher {
public:
Teacher() {
id=0;
name="0";
sex='m';
pay=0;
}
Teacher(int i,string n,char s,int p):id(i),name(n),sex(s),pay(p) {}
void display() {
cout<<"num:"<<id<<endl;
cout<<"name:"<<name<<endl;
cout<<"sex:"<<sex<<endl;
cout<<"pay:"<<pay<<endl;
}
Teacher(Student &s);//以Student类引用为形参的构造函数
private:
int id,pay;
string name;
char sex;
};
class Student {
public:
Student() {
id=0;
name="0";
sex='m';
score=0.0;
pay=1500;
}
Student(int i,string n,char s,float sc):id(i),name(n),sex(s),score(sc) {
pay=1500;
}
void display() {
cout<<"num:"<<id<<endl;
cout<<"name:"<<name<<endl;
cout<<"sex:"<<sex<<endl;
cout<<"score:"<<score<<endl;
cout<<endl<<endl;
}
int get_id() {
return id;
}
char get_sex() {
return sex;
}
string get_name() {
return name;
}
private:
int id;
float score;
string name;
char sex;
int pay;
};
Teacher::Teacher(Student &s) {
id=s.get_id();
name=s.get_name();
sex=s.get_sex();
pay=1500;
}
int main() {
Teacher teacher1(10001,"Li",'f',1234.5),teacher2;
Student student1(20010,"Wang",'m',89.5);
cout<<"student1:"<<endl;
student1.display();
teacher2=Teacher(student1);
cout<<"teacher2:"<<endl;
teacher2.display();
return 0;
}
工资通过改构造函数中的数值进行改变