• <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>

            C小加

            厚德 博學(xué) 求真 至善 The bright moon and breeze
            posts - 145, comments - 195, trackbacks - 0, articles - 0
              C++博客 :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理
            單例模式:Singleton 
            單例模式確保某一個(gè)類只有一個(gè)實(shí)例,而且自行實(shí)例化并向整個(gè)系統(tǒng)提供這個(gè)實(shí)例單例模式。單例模式只應(yīng)在有真正的“單一實(shí)例”的需求時(shí)才可使用。

            我實(shí)現(xiàn)了一個(gè)簡(jiǎn)單的單例類,歡迎吐槽。
            #include<iostream>
            using namespace std;

            class Singleton
            {
            public:
                
            static Singleton * GetInstance()//通過(guò)靜態(tài)公有函數(shù)獲得該類的實(shí)例對(duì)象
                {
                    
            if(m_pInstance==NULL)
                    m_pInstance
            =new Singleton();
                    
            return m_pInstance;
                }

            private:
                Singleton(){}
            //構(gòu)造函數(shù)私有化的目的是為了防止從別處實(shí)例化該類對(duì)象
                static Singleton * m_pInstance;
                
            class Garbo//刪除Singleton實(shí)例的對(duì)象
                {
                
            public:
                    
            ~Garbo()
                    {
                        
            if(Singleton::m_pInstance)
                        {
                            delete Singleton::m_pInstance;
                        }
                    }
                };
                
            static Garbo gb;//在程序結(jié)束時(shí),系統(tǒng)會(huì)調(diào)用它的析構(gòu)函數(shù)
            };
            Singleton 
            * Singleton::m_pInstance=NULL;//初始化靜態(tài)數(shù)據(jù)成員

            int main()
            {
                Singleton 
            *sl=Singleton::GetInstance();
                
            return 0;
            }

            Feedback

            # re: C++實(shí)現(xiàn)單例模式  回復(fù)  更多評(píng)論   

            2011-12-21 20:56 by right
            提幾個(gè)問題吧
            1.線程安全
            2.單件對(duì)象與對(duì)象彼此依賴,析構(gòu)可能出現(xiàn)問題
            3.必須從此類派生

            有時(shí)候想想,單件這東西真是有點(diǎn)多余,文檔齊全命名規(guī)范的全局變量或全局函數(shù)完全不會(huì)有問題。

            # re: C++實(shí)現(xiàn)單例模式  回復(fù)  更多評(píng)論   

            2011-12-21 22:27 by C小加
            多線程析構(gòu)的時(shí)候會(huì)出很多問題吧,我只是一個(gè)學(xué)生,能不能詳細(xì)講解一下此類的一些問題啊@right

            # re: C++實(shí)現(xiàn)單例模式[未登錄]  回復(fù)  更多評(píng)論   

            2011-12-21 22:31 by leo
            google 雙檢鎖

            # re: C++實(shí)現(xiàn)單例模式  回復(fù)  更多評(píng)論   

            2011-12-22 22:46 by 遠(yuǎn)行
            覺得你那個(gè)類中類的作用至少?gòu)倪壿嬌鲜嵌嘤嗟模愔械撵o態(tài)成員,在程序結(jié)束時(shí)候析構(gòu),你new的唯一實(shí)例,既然用戶代碼不手動(dòng)刪除這個(gè)實(shí)例,也是在程序結(jié)束時(shí)析構(gòu)的,這樣你的類中類實(shí)現(xiàn)就沒有任何實(shí)際意義了

            # re: C++實(shí)現(xiàn)單例模式  回復(fù)  更多評(píng)論   

            2011-12-22 22:54 by C小加
            你的意思是new 的對(duì)象不用delete了??這。。。@遠(yuǎn)行

            # re: C++實(shí)現(xiàn)單例模式  回復(fù)  更多評(píng)論   

            2011-12-23 19:35 by 遠(yuǎn)行
            你應(yīng)該用更好的設(shè)計(jì)方法。@C小加

            # re: C++實(shí)現(xiàn)單例模式  回復(fù)  更多評(píng)論   

            2011-12-23 21:31 by C小加
            new的對(duì)象如果不delete的話,程序結(jié)束也不會(huì)析構(gòu)的,或者你手動(dòng)delete,或者自動(dòng)delete,我只知道這一種自動(dòng)delete的方法。@遠(yuǎn)行

            # re: C++實(shí)現(xiàn)單例模式  回復(fù)  更多評(píng)論   

            2011-12-31 21:42 by 代東升
            程序結(jié)束后堆棧都被清理了,沒有實(shí)際意義。

            # re: C++實(shí)現(xiàn)單例模式  回復(fù)  更多評(píng)論   

            2012-01-16 22:52 by C小加
            在堆上申請(qǐng)的內(nèi)存能保證程序結(jié)束后被系統(tǒng)系統(tǒng)清理?@代東升

            # re: C++實(shí)現(xiàn)單例模式  回復(fù)  更多評(píng)論   

            2012-05-17 17:17 by 吾問無(wú)為謂
            啊啊啊啊啊啊

            # re: C++實(shí)現(xiàn)單例模式  回復(fù)  更多評(píng)論   

            2012-06-20 12:02 by cobain
            你應(yīng)該禁掉拷貝構(gòu)造和拷貝賦值操作符,不然你這也不是單例了。

            # re: C++實(shí)現(xiàn)單例模式  回復(fù)  更多評(píng)論   

            2012-09-13 13:55 by abel
            if(m_pInstance==NULL)
            {
            static Singleton instance;
            m_pInstance = &instance;
            }
            return m_pInstance;

            # re: C++實(shí)現(xiàn)單例模式  回復(fù)  更多評(píng)論   

            2013-04-11 14:10 by 陳文斌
            你沒發(fā)現(xiàn)有內(nèi)存泄露嗎

            # re: C++實(shí)現(xiàn)單例模式  回復(fù)  更多評(píng)論   

            2013-08-02 19:00 by 宋歡
            應(yīng)該要DELETE的
            色综合久久综精品| 91精品国产91久久久久福利| 综合网日日天干夜夜久久| 久久精品这里只有精99品| 91久久精一区二区三区大全| 久久青青草原国产精品免费| 9191精品国产免费久久| 欧美粉嫩小泬久久久久久久| 午夜精品久久久久久影视riav| 久久综合久久自在自线精品自 | 久久婷婷国产麻豆91天堂| 久久久久久国产a免费观看不卡| 99久久精品免费看国产一区二区三区 | 久久96国产精品久久久| 久久久久久久免费视频| 久久精品一区二区三区不卡| 久久久久亚洲AV无码专区网站 | 久久久免费观成人影院| 2021最新久久久视精品爱| 伊人久久精品影院| 99精品国产在热久久| 亚洲精品无码成人片久久| 色综合久久久久网| 精品久久久久香蕉网| 亚洲人成精品久久久久| 久久久久久人妻无码| 99久久国产综合精品成人影院| 亚洲欧美国产日韩综合久久| 国产一区二区精品久久岳| 国产精品伊人久久伊人电影| 亚州日韩精品专区久久久| 久久久久国色AV免费看图片| 国产成人久久久精品二区三区| 亚洲精品乱码久久久久久按摩| 亚洲国产成人久久综合野外| 麻豆精品久久精品色综合| 中文字幕久久欲求不满| 精品无码久久久久久久久久| 亚洲国产精品综合久久网络| 久久久国产打桩机| 精品久久人人做人人爽综合 |