• <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ì)象,有的就返回,沒(méi)有的話就返回空對(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)過(guò)的對(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í)例還是指針的問(wèn)題,保存實(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ù)等等問(wèn)題,而且即使在clear
            的時(shí)候,也不會(huì)調(diào)用類的析構(gòu)函數(shù)。

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

            伊人久久大香线蕉综合Av| 伊人久久大香线蕉精品不卡| 热久久这里只有精品| 久久久久久亚洲精品无码| 亚洲国产另类久久久精品| 国产精品久久久久一区二区三区 | 国产91色综合久久免费| 中文精品久久久久人妻不卡| 久久久久亚洲av无码专区| 国内精品久久久久久久涩爱| 无码专区久久综合久中文字幕| 久久精品成人| 久久久久一区二区三区| 亚洲欧洲中文日韩久久AV乱码| 狠狠狠色丁香婷婷综合久久五月| 伊人久久无码中文字幕| 伊人久久一区二区三区无码| 国产成人精品久久亚洲高清不卡| 97久久超碰成人精品网站| 五月丁香综合激情六月久久| 国产美女亚洲精品久久久综合| 久久久久无码国产精品不卡| 狠狠久久综合伊人不卡| 91精品观看91久久久久久| 97久久超碰成人精品网站| 99久久人妻无码精品系列| 亚洲伊人久久大香线蕉综合图片| 中文字幕精品无码久久久久久3D日动漫 | 久久精品人人做人人爽97 | 久久国产劲爆AV内射—百度| 久久久久综合国产欧美一区二区| 久久综合狠狠色综合伊人| 久久精品国产亚洲AV无码麻豆| 久久这里只有精品18| 国产精品99久久99久久久| 久久精品九九亚洲精品天堂| AA级片免费看视频久久| 久久播电影网| 久久国产劲爆AV内射—百度| 久久久久无码精品国产| 日本精品久久久中文字幕|