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();
}

 

 

 

 

posted @ 2013-05-22 21:45  onlycxue  阅读(207)  评论(0编辑  收藏  举报