Files
BasicsOfComputerSoftwareEng…/OOP/05/Optional01.cpp
2023-03-24 08:51:40 +08:00

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;
}