• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            Zero Lee的專欄

            One simple counted object pointer

             1 template <typename T>
             2 class Pointer {
             3 protected:
             4     unsigned int* ptrCount;
             5     T* ptrObject;
             6     
             7     void ptrDetach(void)
             8     {
             9         if (ptrCount && --(*ptrCount)==0) {
            10             delete ptrObject;
            11             delete ptrCount;
            12         }
            13         ptrObject = NULL;
            14         ptrCount = NULL;
            15     }
            16     
            17 public:
            18     explicit Pointer(T* ptr = NULL) : ptrObject(ptr)
            19     {
            20         ptrCount = new unsigned int;
            21         *ptrCount = 1;
            22     }
            23     
            24     Pointer(const Pointer<T>& ref)
            25     {
            26         ptrObject = ref.ptrObject;
            27         ptrCount = ref.ptrCount;
            28         ++(*ptrCount);
            29     }
            30     inline virtual ~Pointer()
            31     {    ptrDetach(); }
            32     
            33     Pointer& operator = (const Pointer<T>& ref)
            34     {
            35         if (this!=&ref) {
            36             ptrDetach();
            37             ptrObject = ref.ptrObject;
            38             ptrCount = ref.ptrCount;
            39             ++(*ptrCount);
            40         }
            41         return *this;
            42     }
            43     
            44     inline T& operator*() const
            45     {
            46         return *ptrObject;
            47     }
            48     inline T* getObject() const
            49     {
            50         return ptrObject;
            51     }
            52     inline T* operator ->()const
            53     {
            54         return ptrObject;
            55     }
            56     inline bool operator!() const
            57     {
            58         return (*ptrCount==1); 
            59     }
            60     inline int operator++() const
            61     {
            62         return ++(*ptrCount); 
            63     }
            64     int operator--() const
            65     {
            66         if (*ptrCount==1) {
            67             delete this;
            68             return 0;
            69         }
            70         return --(*ptrCount); 
            71     }
            72 }

            posted on 2010-10-17 15:28 Zero Lee 閱讀(117) 評(píng)論(0)  編輯 收藏 引用


            只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。
            網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


            欧美亚洲国产精品久久高清| 欧美与黑人午夜性猛交久久久| 久久人人爽人人爽人人片av麻烦| 久久99久国产麻精品66| 国产精品久久国产精品99盘 | 色99久久久久高潮综合影院| 久久久久亚洲精品日久生情 | 日韩人妻无码一区二区三区久久99| 久久人妻少妇嫩草AV无码专区| 91久久精品视频| 久久成人国产精品| 色偷偷91久久综合噜噜噜噜| 国产亚洲欧美精品久久久| 欧美激情精品久久久久久久九九九 | 国产V综合V亚洲欧美久久| 亚洲精品99久久久久中文字幕| 国产精品久久久久国产A级| 久久99热这里只有精品66| 一本大道久久a久久精品综合| 亚洲AV日韩精品久久久久| 香蕉99久久国产综合精品宅男自 | 一个色综合久久| 久久久精品视频免费观看| 久久777国产线看观看精品| 人妻无码αv中文字幕久久琪琪布 人妻无码久久一区二区三区免费 人妻无码中文久久久久专区 | 国产麻豆精品久久一二三| 2021国内久久精品| 国产香蕉久久精品综合网| 久久亚洲国产精品123区| 久久精品国产亚洲Aⅴ蜜臀色欲| 一级做a爰片久久毛片16| 久久青草国产精品一区| 久久久久久久尹人综合网亚洲 | 久久综合久久伊人| 亚洲国产天堂久久久久久 | 久久丫精品国产亚洲av不卡| 中文字幕无码免费久久| 欧美精品久久久久久久自慰| 国产精品无码久久综合 | 精品久久久久中文字幕日本| 99re这里只有精品热久久|