题目
image.png
这个程序非常简单,就是做一个wrapper,然后重写一些方法,但是不增加功能。
关于代理模式,实际运用及实现思路,参考 C++智能指针, std::shared_ptr<T>
代码如下,
#include <string>
using namespace std;
class Person
{
friend class ResponsiblePerson;
int age;
public:
Person(int age) : age(age) {}
int get_age() const { return age; }
void set_age(int age) { this->age=age; }
string drink() const { return "drinking"; }
string drive() const { return "driving"; }
string drink_and_drive() const { return "driving while drunk"; }
};
class ResponsiblePerson
{
public:
ResponsiblePerson(const Person &person) : person(person) {}
int get_age() const {
return person.get_age();
}
void set_age(int age) {
person.set_age(age);
}
string drink() const {
if(person.age < 18) {
return "too young";
}
return person.drink();
}
string drive() const {
if(person.age < 16) {
return "too young";
}
return person.drive();
}
string drink_and_drive() const {
return "dead";
}
private:
Person person;
};
网友评论