class People {
protected:
int age;
string name;
public:
People() {}
People(int a, string n) : age(a), name(n) {}
virtual ~People() {}
void setValue(int m, string str) {
age = m;
name = str;
}
virtual void display() = 0;
};
class Student : public People {
private:
int studentID;
public:
Student() {}
Student(int a, string n, int id) : People(a, n), studentID(id) {}
~Student() {}
void setID(int m) {
studentID = m;
}
void display() {
cout << "Name: " << name << endl;
cout << "Age: " << age << endl;
cout << "Student ID: " << studentID << endl;
}
};
class Teacher : public People {
private:
int teacherID;
public:
Teacher() {}
Teacher(int a, string n, int id) : People(a, n), teacherID(id) {}
~Teacher() {}
void setID(int m) {
teacherID = m;
}
void display() {
cout << "Name: " << name << endl;
cout << "Age: " << age << endl;
cout << "Teacher ID: " << teacherID << endl;
}
};
int main() {
People* ptr;
Student s;
Teacher t;
int age, studentID, teacherID;
string name;
// 学生信息输入
cout << "Enter student name: ";
getline(cin, name);
cout << "Enter student age: ";
cin >> age;
cout << "Enter student ID: ";
cin >> studentID;
// 利用父类指针给学生对象初始化赋值
ptr = &s;
ptr->setValue(age, name);
s.setID(studentID);
// 教师信息输入
cin.ignore(); // 忽略掉前面输入时留下的回车符
cout << "Enter teacher name: ";
getline(cin, name);
cout << "Enter teacher age: ";
cin >> age;
cout << "Enter teacher ID: ";
cin >> teacherID;
// 利用父类指针给教师对象初始化赋值
ptr = &t;
ptr->setValue(age, name);
t.setID(teacherID);
// 输出学生和教师信息
cout << endl << "Student Information:" << endl;
s.display();
cout << endl << "Teacher Information:" << endl;
t.display();
return 0;
}