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

            糊涂的午后:返回臨時對象

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

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

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

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

            久久午夜电影网| 久久精品国产亚洲AV嫖农村妇女| 国产精品久久自在自线观看| 国产精品久久久久jk制服| 国产婷婷成人久久Av免费高清| 久久丫忘忧草产品| 日韩精品无码久久久久久| 国产三级久久久精品麻豆三级| 99久久er这里只有精品18| 99久久精品无码一区二区毛片| 久久婷婷五月综合国产尤物app| 国产精品99久久99久久久| 久久精品国产精品亜洲毛片| 欧美日韩精品久久久久| 精品久久久久久国产| 噜噜噜色噜噜噜久久| 97超级碰碰碰碰久久久久| 久久夜色精品国产欧美乱| 亚洲一区精品伊人久久伊人| 久久中文字幕一区二区| 色欲综合久久中文字幕网| 久久久中文字幕日本| 国产三级久久久精品麻豆三级| 97视频久久久| 日韩久久久久中文字幕人妻| 中文字幕成人精品久久不卡| 久久亚洲精精品中文字幕| 久久笫一福利免费导航| 国产精品99久久久久久宅男 | 亚洲av成人无码久久精品 | 91精品国产综合久久精品| 亚洲AV伊人久久青青草原| 久久99精品国产99久久6| 久久99国产精品久久99果冻传媒| 久久99久国产麻精品66| 中文字幕久久亚洲一区| 韩国三级中文字幕hd久久精品| www.久久热.com| 久久97精品久久久久久久不卡| 国产精品女同久久久久电影院| 亚洲午夜无码久久久久|