九妖科学
您身边的科学探索中心
           您身边的科学探索中心

g645

更新时间:2023-02-03 点击: 8

#include
#include
#include

using namespace std;

class Person {
public:
Person(const string& name, const string& profession)
: Name(name), Profession(profession) {}
void Walk(const string& destination) const {
cout << Profession << ": " << Name << " walks to: " << destination << endl; } void Say(const string& text) const { cout << Profession << ": " << Name << " says: " << text << endl; } void Sing(const string& song) const { cout << Profession << ": " << Name << " sings a song: " << song << endl; } private: const string Name; const string Profession; }; class Student : public Person { public: Student(const string& name, const string& favouriteSong) : Person(name, "Student"), FavouriteSong(favouriteSong) {} void Learn() const { cout << "Student: " << Name << " learns" << endl; } void Sing() const { cout << "Student: " << Name << " sings a song: " << FavouriteSong << endl; } private: const string FavouriteSong; }; class Teacher : public Person { public: Teacher(const string& name, const string& subject) : Person(name, "Teacher"), Subject(subject) {} void Teach() const { cout << "Teacher: " << Name << " teaches: " << Subject << endl; } private: const string Subject; }; class Policeman : public Person { public: Policeman(const string& name) : Person(name, "Policeman") {} void Check(const Person& p) const { cout << "Policeman: " << Name << " checks " << p.Profession << ". " << p.Profession << "'s name is: " << p.Name << endl; } }; void VisitPlaces(const Person& person, const vector& places) {
for (const auto& p : places) {
person.Walk(p);
}
}

int main() {
Teacher t(“Jim”, “Math”);
Student s(“Ann”, “We will rock you”);
Policeman p(“Bob”);

VisitPlaces(t, {“Moscow”, “London”});
p.Check(s);
VisitPlaces(s, {“Moscow”, “London”});
return 0;
}