zoukankan      html  css  js  c++  java
  • 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();
    }
  • 相关阅读:
    生成函数学习笔记
    CF1437F Emotional Fishermen
    BZOJ 1443 [JSOI2009]游戏Game
    BZOJ 1018 [SHOI2008]堵塞的交通traffic
    访问量破1000之记录
    BZOJ 1022 [SHOI2008]小约翰的游戏John
    BZOJ1457 棋盘游戏
    BZOJ1874: [BeiJing2009 WinterCamp]取石子游戏
    BZOJ 1188 [HNOI2007]分裂游戏
    Codeforces Round #345 (Div. 2)
  • 原文地址:https://www.cnblogs.com/onlycxue/p/3093745.html
Copyright © 2011-2022 走看看