编写一个控制台程序,在该程序中构造一个Person基类,再分别构造Student和Teacher派生类,要求具有不同的特征和行为,能通过静态成员自动记录由不同派生类创建的对象的人数。
时间: 2024-03-18 13:39:56 浏览: 65
好,以下是满足您要求的代码:
```c++
#include <iostream>
#include <string>
using namespace std;
class Person {
protected:
string name;
int age;
public:
Person(string n, int a) : name(n), age(a) {}
virtual void show() {
cout << "Name: " << name << endl;
cout << "Age: " << age << endl;
}
static int count;
};
class Student : public Person {
protected:
string major;
public:
Student(string n, int a, string m) : Person(n, a), major(m) {
count++;
}
void show() {
cout << "Type: Student" << endl;
Person::show();
cout << "Major: " << major << endl;
}
};
class Teacher : public Person {
protected:
string subject;
public:
Teacher(string n, int a, string s) : Person(n, a), subject(s) {
count++;
}
void show() {
cout << "Type: Teacher" << endl;
Person::show();
cout << "Subject: " << subject << endl;
}
};
int Person::count = 0;
int main() {
Person* people[5];
people[0] = new Student("Tom", 20, "Computer Science");
people[1] = new Student("Jerry", 19, "Mathematics");
people[2] = new Teacher("Alice", 35, "English");
people[3] = new Teacher("Bob", 45, "Physics");
people[4] = new Student("Peter", 22, "Economics");
for (int i = 0; i < 5; i++) {
people[i]->show();
cout << endl;
}
cout << "Number of people: " << Person::count << endl;
return 0;
}
```
这个程序中,我们定义了一个基类 `Person`,以及两个派生类 `Student` 和 `Teacher`。每个类都有一个 `show()` 函数,用于显示对象的信息。`Person` 类还有一个静态成员变量 `count`,用于记录由不同派生类创建的对象的人数。在 `Student` 和 `Teacher` 构造函数中,我们将 `count` 加1,以便自动记录对象的数量。在 `main()` 函数中,我们创建了5个对象,并通过指针数组调用它们的 `show()` 函数。最后,我们输出了创建的对象数量。
希望这个程序能够满足您的要求!
阅读全文