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

            focus on linux, c/c++, lua

            糊涂的午后:返回臨時(shí)對(duì)象

            前兩天寫代碼的時(shí)候,大概有這樣的一個(gè)需求,就是在一個(gè)hash_map中查找一個(gè)對(duì)象,有的就返回,沒有的話就返回空對(duì)象。恰好這個(gè)對(duì)象是std::vector。
            我今天看了下代碼,居然代碼是這樣寫的
            VECTOR& GetElement(TYPE key)
            {
                 VECTOR vecTmp;
                 if (find)
                 {
                       vecTmp = value;
                 }
                 return vecTmp;
            }

            大概的意思就是找到這個(gè)值就返回它的value,一個(gè)長(zhǎng)度不為0的vector,如果找不到,就返回一個(gè)空的vector。很明顯這樣做,始終是返回一個(gè)空的vector。
            因?yàn)関ecTmp是一個(gè)臨時(shí)對(duì)象,它退出生命空間的時(shí)候,會(huì)被析構(gòu),然后把析構(gòu)過的對(duì)象再傳給一個(gè)臨時(shí)對(duì)象,也就是你的值。盡管在傳值的時(shí)候,程序不會(huì)
            崩潰,盡管棧已經(jīng)回收,但是vecTmp還是把它的內(nèi)容傳給了一個(gè)臨時(shí)的對(duì)象。
            正確的做法應(yīng)該是在參數(shù)中做左值傳遞。
            void GetElement(TYPE key, VECTOR& vec);

            哎,太熱了,這樣的錯(cuò)誤都能犯,服了你了!
            2010-1008添加:
            關(guān)于在容器中保存實(shí)例還是指針的問題,保存實(shí)例,在push_back的時(shí)候因?yàn)槭侵祩鬟f,會(huì)產(chǎn)生臨時(shí)對(duì)象,那么就會(huì)多一次臨時(shí)對(duì)象的創(chuàng)建和析構(gòu),且在vector
            調(diào)用clear的時(shí)候,要調(diào)用每個(gè)實(shí)例的析構(gòu)函數(shù)。如果保存指針,那也就是4個(gè)字節(jié)的int變量,不存在臨時(shí)變量,構(gòu)造函數(shù),析構(gòu)函數(shù)等等問題,而且即使在clear
            的時(shí)候,也不會(huì)調(diào)用類的析構(gòu)函數(shù)。

            posted on 2010-07-03 16:19 zuhd 閱讀(416) 評(píng)論(0)  編輯 收藏 引用 所屬分類: c/c++

            老司机午夜网站国内精品久久久久久久久| 精品久久久无码中文字幕| 2021久久精品免费观看| 亚洲欧美国产日韩综合久久| 日韩人妻无码一区二区三区久久 | 欧美激情精品久久久久久久九九九| 日本精品久久久久久久久免费| 色综合久久久久无码专区| 亚洲伊人久久大香线蕉苏妲己| 久久久久亚洲AV无码专区网站| 色综合久久无码五十路人妻| 国产精品一区二区久久精品无码| 欧美亚洲国产精品久久高清| 青青草国产精品久久| 国内精品人妻无码久久久影院导航| 久久99免费视频| 97精品依人久久久大香线蕉97| 精品欧美一区二区三区久久久| 中文字幕乱码人妻无码久久| 久久中文字幕无码专区| 香蕉久久一区二区不卡无毒影院| 精品综合久久久久久97| 精品伊人久久久| 内射无码专区久久亚洲| 久久人人爽人人爽人人片AV东京热| 国产精品免费福利久久| 久久综合亚洲色HEZYO社区| 久久一区二区三区免费| 狠狠综合久久综合中文88| 精品久久久久久无码中文字幕| 国内精品久久国产大陆| 99久久精品国产高清一区二区| 亚洲日韩中文无码久久| 影音先锋女人AV鲁色资源网久久 | 国产亚洲婷婷香蕉久久精品| 国产∨亚洲V天堂无码久久久| 久久久女人与动物群交毛片 | 久久久久国色AV免费观看| 久久高清一级毛片| 女同久久| 婷婷综合久久中文字幕蜜桃三电影|