effective c++ 条款15 在资源管理类中提供对原始资源的访问
总看看书上的例子感觉很没有成就感,深思述略了一下“资源管理类”,看到“资源”我想起了厕所,无论是在宿舍还是在公司里厕所的资源都是有限的,有考虑到自己接触的厕所都是比较低端的那种,也就是说只能通过关门和开门来表示是否有人,于是我的类产生了,如下:
测所类:
class WC { public: WC(){}; void doorClose() { std::cout << "I am here!"<< std::endl; } void doorOpen() { std::cout<< "you can come in!" << std::endl; } ~WC(){}; private: }
厕所管理员(资源管理类):
class WcAdmin{ public: WcAdmin(WC *p); ~WcAdmin(); private: WC *wc; } WcAdmin::WcAdmin(WC *p):wc(p) { wc->doorClose(); } ~WcAdmin::WcAdmin() { wc->doorOpen(); }
资源管理类的角色就是帮助厕所关门和开门,从而告诉我们厕所是否可用。
中午到了:
清扫厕所的阿姨要向厕所管理员要厕所来打扫,假如阿姨的函数如下:
void clean(WC *ptr);
如果向上面描述的厕所管理员是不合格的,他不知道自己负责厕所是哪一个了,没事吸烟了。勤劳的阿姨可定会向总管告状,然后他就被开除了。合格的厕所管理如下:
class WcAdmin{ public: WcAdmin(WC *p); ~WcAdmin(); void get() { return wc; } private: WC *wc; } WcAdmin::WcAdmin(WC *p):wc(p) { wc->doorClose(); } ~WcAdmin::WcAdmin() { wc->doorOpen(); }