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

            yy6080久久| 99久久精品免费看国产| 亚洲国产另类久久久精品小说 | 亚洲综合精品香蕉久久网| 久久天天躁夜夜躁狠狠| 狠狠色婷婷综合天天久久丁香| 精品久久一区二区| 久久综合久久美利坚合众国| 国产精品9999久久久久| 亚洲国产天堂久久久久久 | 久久噜噜电影你懂的| 久久久久久国产精品无码下载| 国产亚洲精品久久久久秋霞 | 性做久久久久久久久浪潮| 久久精品国产99久久无毒不卡| 久久免费视频一区| 精品国产福利久久久| 精品久久亚洲中文无码| 久久久久国色AV免费观看 | 亚洲AⅤ优女AV综合久久久| 国产亚洲精久久久久久无码| 久久久久久久91精品免费观看 | 久久久久久极精品久久久| 久久香综合精品久久伊人| 7777精品伊人久久久大香线蕉| 精品国产乱码久久久久久浪潮| 久久午夜羞羞影院免费观看| 久久久午夜精品| 色天使久久综合网天天| 国产精品欧美亚洲韩国日本久久| 日日躁夜夜躁狠狠久久AV| 亚洲午夜无码久久久久小说| 久久久久国产一级毛片高清板| 久久99精品国产99久久6| 伊人色综合久久| 国内精品久久久久久久久电影网 | 久久精品国产清高在天天线| 色欲综合久久中文字幕网| 久久久亚洲欧洲日产国码aⅴ| 久久精品成人欧美大片| 伊人久久大香线蕉综合影院首页 |