116 lines
2.5 KiB
C++
116 lines
2.5 KiB
C++
#include <iostream>
|
|
|
|
class Teacher {
|
|
private:
|
|
int number;
|
|
std::string name;
|
|
std::string sex;
|
|
int salary;
|
|
|
|
friend std::ostream &operator<<(std::ostream &output, Teacher &teacher);
|
|
friend std::istream &operator>>(std::istream &input, Teacher &teacher);
|
|
|
|
public:
|
|
Teacher();
|
|
int getNumber() {
|
|
return this->number;
|
|
}
|
|
|
|
std::string getName() {
|
|
return this->name;
|
|
}
|
|
|
|
std::string getSex() {
|
|
return this->sex;
|
|
}
|
|
|
|
int getSalary() {
|
|
return this->salary;
|
|
}
|
|
};
|
|
|
|
class Student {
|
|
private:
|
|
int number;
|
|
std::string name;
|
|
std::string sex;
|
|
int grade;
|
|
|
|
friend std::ostream &operator<<(std::ostream &output, Student &stu);
|
|
friend std::istream &operator>>(std::istream &input, Student &stu);
|
|
|
|
public:
|
|
Student();
|
|
Student(Teacher &teacher);
|
|
};
|
|
|
|
Teacher::Teacher() {
|
|
this->number = 0;
|
|
this->name = "undefined";
|
|
this->sex = "unknown";
|
|
this->salary = 0;
|
|
}
|
|
|
|
Student::Student() {
|
|
this->number = 0;
|
|
this->name = "undefined";
|
|
this->sex = "unknown";
|
|
this->grade = 1;
|
|
}
|
|
|
|
Student::Student(Teacher& teacher) {
|
|
this->number = teacher.getNumber();
|
|
this->name = teacher.getName();
|
|
this->sex = teacher.getSex();
|
|
this->grade = 1;
|
|
}
|
|
|
|
std::ostream &operator<<(std::ostream &output, Teacher &teacher) {
|
|
output << "Number: " << teacher.number << std::endl
|
|
<< "Name: " << teacher.name << std::endl
|
|
<< "Sex: " << teacher.sex << std::endl
|
|
<< "Salary: " << teacher.salary << std::endl;
|
|
|
|
return output;
|
|
}
|
|
|
|
std::istream &operator>>(std::istream &input, Teacher &teacher) {
|
|
std::cout << "Number: ";
|
|
input >> teacher.number;
|
|
std::cout << "Name: ";
|
|
input >> teacher.name;
|
|
std::cout << "Sex: ";
|
|
input >> teacher.sex;
|
|
std::cout << "Salary: ";
|
|
input >> teacher.salary;
|
|
return input;
|
|
}
|
|
|
|
std::ostream &operator<<(std::ostream &output, Student &stu) {
|
|
output << "Number: " << stu.number << std::endl
|
|
<< "Name: " << stu.name << std::endl
|
|
<< "Sex: " << stu.sex << std::endl
|
|
<< "Grade: " << stu.grade << std::endl;
|
|
|
|
return output;
|
|
}
|
|
|
|
std::istream &operator>>(std::istream &input, Student &stu) {
|
|
std::cout << "Number: ";
|
|
input >> stu.number;
|
|
std::cout << "Name: ";
|
|
input >> stu.name;
|
|
std::cout << "Sex: ";
|
|
input >> stu.sex;
|
|
std::cout << "Grade: ";
|
|
input >> stu.grade;
|
|
return input;
|
|
}
|
|
|
|
int main() {
|
|
Teacher tea;
|
|
std::cin >> tea;
|
|
Student stu = tea;
|
|
std::cout << tea << std::endl << stu;
|
|
return 0;
|
|
} |