青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

Note of Justin

關于工作和讀書的筆記

  C++博客 :: 首頁 :: 聯系 :: 聚合  :: 管理
  47 Posts :: 0 Stories :: 45 Comments :: 0 Trackbacks

留言簿(14)

搜索

  •  

積分與排名

  • 積分 - 53242
  • 排名 - 433

最新評論

閱讀排行榜

評論排行榜

[原創文章歡迎轉載,但請保留作者信息]
Justin 于 2009-12-17

C++傳遞對象的時候默認是傳值的(pass-by-value),而這樣的傳遞自然是昂貴的:這當中包含了臨時對象的構造/析構,以及臨時對象中的對象的構造/析構,運氣背點還可能有對象中的對象中的對象的構造/析構……(有好的不學,去學C@#¥%)

相對于傳“值”,一個更好的替代方法是傳“const引用”(pass-by-reference-to-const)。
傳值與傳指針的一個區別是,通過傳值傳遞的對象并不是原來的對象,而是一個復制品,所以隨便你打它罵它,真身都不會受到影響。
而通過傳指針的對象和原來的對象就是同一家伙,改動一個另外一個也受到相同的影響。而這有時候并不是我們想要的結果。
考慮到傳值代價太高,傳“const引用”就成了一個很好的替代品。

傳“const引用”的另外一個好處在于避免了“剝皮問題”(slicing problem,侯捷大師的版本是“對象切割問題”,我用這個中文名字是為了更容易記住:))
書上的代碼已經說得很清楚,這里就大概帶過:用傳值方式傳參的函數,如果某參數的類型是一個父類對象,而實際傳遞的參數是一個子類對象,只有該對象的父類部分會被構造并傳遞到函數中,子類部分的成員,作為父類對象的“皮”,就被血淋淋的剝掉了……
而如果用傳“const引用”方式,就沒有這種慘無人道的狀況:本來父類的指針就可以用來指向一個子類對象,天經地義。

但凡有規矩就有例外,對于內置類型(bulit-in type)對象以及STL中的迭代器、函數對象,Scott還是建議使用傳值方式傳遞,原因是他們本來就是被設計成適合傳值傳遞的。(個人觀點:大師說:“……it's not unreasonable to choose pass-by-value。”,注意這里有句潛臺詞:其實對以上類型用傳“const引用”方式傳遞也是可以的。)
如果你認為上面兩種情況可以用傳值傳遞是因為它們,比如說內置類型對象,的大小本來就小,進而得出小數據類型就可以用傳值傳遞,就打錯特錯了。原因見第一段:小對象的構造/析構過程完全可能很恐怖。
再退一步,哪怕某個類型很小,它的構造/析構函數也簡單到可以忽略不計,我們還是不能以此斷定可以用傳值傳遞這種類型的對象:因為編譯器往往會做出一些蠢事。書中的一個例子是,對于一些編譯器可以接受把一個double類型對象存入寄存器,但是如果你給它一個只有一個double成員的對象交給它,它卻拒絕將該對象存入寄存器。(什么事讓編譯器插一手,不是問題也有了問題……)
最后還有個理由,雖然某對象現在很小,可是隨著社會的發展人類的進步,有可能兩年后它就會變成一個龐然大物,到時候用傳值也會變得不合適。

因此,還是老實點:除了內置類型和STL的迭代器、函數對象外,其他的對象傳遞時,用傳“const引用”代替傳值吧。

posted on 2010-01-04 08:14 Justin.H 閱讀(2313) 評論(2)  編輯 收藏 引用 所屬分類: Effective C++ 炒冷飯

Feedback

# re: Effective C++ 炒冷飯 - Item20 用傳“const引用”取代傳“值” 2010-01-05 15:55 as3
這個系列不錯,每個話題里面帶點簡短的示例code更好  回復  更多評論
  

# re: Effective C++ 炒冷飯 - Item20 用傳“const引用”取代傳“值” 2010-01-06 08:25 Justin.H
謝謝as3的提醒,以后我盡可能加些代碼進去炒:)  回復  更多評論
  

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            亚洲国产导航| 亚洲一区二区免费视频| 久久亚洲春色中文字幕| 久久国产精品99久久久久久老狼| 亚洲欧美综合| 性欧美在线看片a免费观看| 久久国产精品网站| 久久免费视频一区| 欧美久色视频| 国产欧美亚洲精品| 亚洲黄色影片| 欧美亚洲免费高清在线观看| 久久综合久久综合久久| 亚洲精品1区| 亚洲在线视频一区| 久久亚洲春色中文字幕| 欧美日韩亚洲三区| 免费在线看成人av| 尤物在线观看一区| 一区二区三区不卡视频在线观看| 国产精品99久久久久久久vr| 久久riav二区三区| 亚洲人被黑人高潮完整版| 亚洲综合好骚| 欧美高清视频一区二区三区在线观看| 国产精品久久久免费| 亚洲国产精品国自产拍av秋霞| 亚洲在线国产日韩欧美| 欧美成人精品1314www| 国产精品99久久久久久白浆小说| 久久久久一本一区二区青青蜜月| 欧美视频在线观看一区二区| 精品动漫3d一区二区三区| 亚洲一区免费| 最新成人在线| 六月天综合网| 激情综合久久| 久久成人亚洲| 亚洲免费视频一区二区| 欧美精品三级| 亚洲第一区在线观看| 欧美亚洲免费电影| 99在线精品观看| 欧美激情久久久久| 亚洲电影免费| 欧美大片在线观看一区二区| 欧美中文在线观看国产| 国产乱子伦一区二区三区国色天香| 夜夜嗨av一区二区三区中文字幕 | 久久久久久久久久久久久女国产乱| 国产精品av免费在线观看| 亚洲黄色高清| 欧美国产精品中文字幕| 久久蜜桃资源一区二区老牛| 国产一区二区黄色| 久久精品网址| 久久9热精品视频| 狠狠色2019综合网| 麻豆久久婷婷| 美女诱惑一区| 亚洲日本黄色| 亚洲精品欧美在线| 欧美日韩国产精品自在自线| 一本色道久久88亚洲综合88| 亚洲九九爱视频| 欧美视频精品在线观看| 亚洲欧美日产图| 香蕉av777xxx色综合一区| 国产一区二区三区高清播放| 久久一区二区三区国产精品| 久久久噜噜噜久久中文字免| 91久久香蕉国产日韩欧美9色| 亚洲国产国产亚洲一二三| 欧美国产在线电影| 国产精品一区三区| 国产精品蜜臀在线观看| 午夜视频久久久久久| 亚洲欧美日本在线| 国产一区二区三区无遮挡| 久久综合色影院| 欧美激情视频网站| 亚洲婷婷综合色高清在线 | 亚洲全部视频| 国产精品久久久久久户外露出| 欧美一站二站| 葵司免费一区二区三区四区五区| 亚洲靠逼com| 亚洲一区二区伦理| 精品1区2区3区4区| 亚洲黄色在线观看| 国产精品亚发布| 欧美刺激性大交免费视频| 欧美美女bb生活片| 久久久久一区二区三区四区| 欧美国产日本| 久久久久国产精品一区二区| 欧美精品免费观看二区| 欧美一区二区免费视频| 免费观看亚洲视频大全| 亚洲欧美国产日韩天堂区| 久久综合色88| 香蕉亚洲视频| 欧美精品一区二区三区蜜臀| 久久亚洲精品网站| 国产精品福利网| 最近中文字幕mv在线一区二区三区四区| 国产日韩欧美综合在线| 亚洲精华国产欧美| 黑人一区二区| 亚洲自啪免费| 亚洲天堂久久| 欧美国产第一页| 美女视频网站黄色亚洲| 国产视频精品xxxx| 亚洲素人在线| 亚洲性图久久| 欧美日韩国产一区二区三区地区| 欧美1区视频| 久久婷婷丁香| 欧美激情视频一区二区三区在线播放 | 亚洲精品欧美日韩专区| 精品9999| 亚洲午夜免费视频| 一本色道久久99精品综合 | 模特精品在线| 久久综合网络一区二区| 国产精品亚洲片夜色在线| 亚洲精品欧美日韩专区| 亚洲激情视频网站| 久久亚洲风情| 99视频精品全部免费在线| 久久精品国产亚洲一区二区三区| 欧美福利视频一区| 欧美成人精品福利| 伊人春色精品| 久久嫩草精品久久久久| 久久久999精品免费| 国产婷婷成人久久av免费高清| 亚洲一区免费在线观看| 亚洲欧美区自拍先锋| 国产精品入口夜色视频大尺度| 亚洲线精品一区二区三区八戒| 亚洲欧美一区二区激情| 国产精品视频免费| 亚洲欧美资源在线| 久久综合九色综合欧美狠狠| 在线国产亚洲欧美| 你懂的网址国产 欧美| 亚洲欧洲一区二区天堂久久| 日韩一区二区精品葵司在线| 欧美视频在线观看一区| 亚洲欧美日韩精品在线| 久久五月激情| 亚洲精品视频在线播放| 欧美日韩国产综合视频在线观看中文| 日韩一级欧洲| 久久精品国产v日韩v亚洲| 雨宫琴音一区二区在线| 欧美久久一区| 亚洲欧美韩国| 一本综合精品| 亚洲影院高清在线| 欧美大片免费久久精品三p | 欧美日韩国产专区| 亚洲视频综合在线| 在线观看视频欧美| 欧美精品不卡| 欧美亚洲免费| 亚洲国产欧美国产综合一区| 国产精品99久久久久久久女警 | 亚洲午夜未删减在线观看| 久久久久国内| 亚洲精选一区| 国产伦精品一区二区三区四区免费| 久久免费视频网站| 日韩一级免费| 免费看的黄色欧美网站| 亚洲一二区在线| 一区二区三区在线看| 欧美亚洲成人免费| 欧美va亚洲va国产综合| 欧美一区二区三区免费在线看| 亚洲国产午夜| 美女脱光内衣内裤视频久久影院| 亚洲视频在线观看视频| 亚洲国产高清自拍| 国产伦一区二区三区色一情| 欧美精品激情在线观看| 久久精品亚洲| 亚洲欧美资源在线| 一区二区三区四区精品| 亚洲黄色影片| 美玉足脚交一区二区三区图片| 欧美一级片一区| 欧美精品在线一区| 亚洲国产合集| 美女黄网久久| 久久久五月婷婷| 久久成人免费日本黄色| 亚洲一区三区电影在线观看|