更新时间: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
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;
}