4/19打卡

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

 

posted @ 2023-04-19 21:44  aallofitisst  阅读(19)  评论(0)    收藏  举报