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

Note of Justin

關(guān)于工作和讀書的筆記

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

留言簿(14)

搜索

  •  

積分與排名

  • 積分 - 53229
  • 排名 - 433

最新評(píng)論

閱讀排行榜

評(píng)論排行榜

[原創(chuàng)文章歡迎轉(zhuǎn)載,但請(qǐng)保留作者信息]

Justin 于 2009-10-26

這里要講的是飯前要洗手。

如果手沒洗干凈就開動(dòng),你可能會(huì)因?yàn)槌韵屡K東西而腹瀉不止;如果對(duì)象沒初始化就使用,程序可能會(huì)由于未知的初值參與運(yùn)算而痛苦不堪。

道理很簡單。怎么洗呢:

  • 對(duì)于內(nèi)建的對(duì)象類型(例子?int),一定要親自初始化他們,因?yàn)?em>有時(shí)候C++不會(huì)幫你干這種沒有技術(shù)含量的活@#¥%
  • 對(duì)于對(duì)象自身的成員,推薦的方法是在構(gòu)造函數(shù)的初始化列表來干這個(gè)活。
    注意,如果只是簡單的在構(gòu)造函數(shù)里將變量一一賦值,那只是“賦值”,不是“初始化”。前者的效率要比后者低,因?yàn)榍罢呦葮?gòu)造了對(duì)象再對(duì)他們賦值,而后者一石二鳥,畢其功于一役,在構(gòu)造的同時(shí)就也把值賦了(多好的孩子!)。這里還沒加上拷貝構(gòu)造函數(shù)的可能開銷,還有一些類型如const變量、引用(reference)是不能用賦值的形式“初始化”的……
    下面就有兩個(gè)程序片段的例子對(duì)比(最恨貼代碼的了,沒有一點(diǎn)技術(shù)含量)
    //initialize?by?assignment
    ClassA::ClassA?(int?i,?const?std::string&?s,?const?ClassC&?c)
    {
    ???iInt?
    =?i;
    ???sStr?
    =?s;
    ???cClassC?
    =?c;
    }

    // initialize?by?initialization?list
    ClassB::ClassB?( int ?i,? const ?std:: string & ?s,? const ?ClassC & ?c)
    ???:?iInt(i),
    ?????sStr(s),
    ?????cClassC(c)
    {}
  • 如果在初始化某個(gè)對(duì)象的時(shí)候,有對(duì)其他對(duì)象是否有初始化的依賴(對(duì)不起,這里有點(diǎn)拗口),一定要確保其中所依賴的對(duì)象已經(jīng)初始化完畢。通篇幾乎都在說沒有什么技術(shù)含量,最后逼得大師給了一點(diǎn)有技術(shù)含量的內(nèi)容:
    當(dāng)不同的對(duì)象的初始化存在相互依賴時(shí),某個(gè)對(duì)象沒有初始化有可能導(dǎo)致另外一個(gè)對(duì)象初始化的失敗。
    比如說,呃……我又要比如說了,吃飯前要保證做飯的自來水是干凈的,也要保證抓飯的手(哪國的?)也是干凈的。要保證手是干凈的就要洗手,洗手的前提是自來水是干凈的。這個(gè)時(shí)候手和自來水是否干凈這兩個(gè)前提之間就有了依賴關(guān)系。
    當(dāng)初始化涉及到非局部靜態(tài)對(duì)象(non-local static object)時(shí),問題更加明顯:非局部靜態(tài)對(duì)象如果定義在不同的文件中,他們就有可能位于不同的編譯單元(translation unit),因?yàn)檫@些對(duì)象到底誰先被初始化是不可預(yù)知的。(也就是說我們可能在洗手前并不知道水是不是已經(jīng)弄干凈了)

    解決此類問題的一個(gè)方法是:把非局部靜態(tài)對(duì)象轉(zhuǎn)換為局部靜態(tài)對(duì)象(local static object),也就是把它的定義放在一個(gè)函數(shù)里。然后緊接著在這個(gè)函數(shù)返回該對(duì)象的引用。C++語言規(guī)定在調(diào)用一個(gè)含有局部靜態(tài)對(duì)象的函數(shù)時(shí),其中的所有局部靜態(tài)對(duì)象都必須初始化。這個(gè)方法就是利用這一特性,將原本對(duì)一個(gè)非局部靜態(tài)對(duì)象的訪問,轉(zhuǎn)換為對(duì)一個(gè)函數(shù)的調(diào)用,這個(gè)函數(shù)會(huì)返回該靜態(tài)對(duì)象的引用,并且保證這個(gè)對(duì)象已經(jīng)被初始化了。
    就比如說如果我們需要保證洗手的時(shí)候水已經(jīng)是干凈的了,就在水龍頭外加一個(gè)凈水器,這樣只要一開水就一定是干凈的了,哇哈哈。(如果看到這里還不明白,就去看書上的例子吧,我自己也承認(rèn)這一部分被我解讀得很晦澀@#¥%)

    試圖亡羊補(bǔ)牢,總結(jié)一下上面兩坨字:如果需要初始化一個(gè)非局部靜態(tài)對(duì)象,就把它放到一個(gè)函數(shù)里,讓這個(gè)函數(shù)簡單的返回這個(gè)對(duì)象的引用。(為什么要這樣做?你可以返回看上面兩坨字……)

?

posted on 2009-12-15 21:37 Justin.H 閱讀(495) 評(píng)論(2)  編輯 收藏 引用 所屬分類: Effective C++ 炒冷飯

Feedback

# re: Effective C++ 炒冷飯– Item 4 對(duì)象的初始化 2009-12-16 00:16 陳梓瀚(vczh)
發(fā)布的時(shí)候有一個(gè)選項(xiàng)可以放到首頁的。  回復(fù)  更多評(píng)論
  

# re: Effective C++ 炒冷飯– Item 4 對(duì)象的初始化 2009-12-16 10:09 Justin.H
多謝提醒:)  回復(fù)  更多評(píng)論
  

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            媚黑女一区二区| 亚洲一二三级电影| 亚洲高清不卡在线观看| 国产精品一卡二卡| 久久久久久亚洲综合影院红桃| 在线一区免费观看| 夜夜嗨av一区二区三区网页| 亚洲免费观看| 午夜精品一区二区三区在线播放 | 国产精品草莓在线免费观看| 欧美肥婆在线| 国产精品亚洲不卡a| 国产在线精品二区| 亚洲精品少妇网址| 羞羞答答国产精品www一本| 欧美一级久久| 亚洲激情精品| 一区二区三区高清| 久久久久久午夜| 欧美性事免费在线观看| 国产一区二区三区在线播放免费观看| 国产精品视频一| 91久久黄色| 久久大逼视频| 一本久久知道综合久久| 久久久久久综合| 国产视频在线一区二区| 一区二区三区www| 久久午夜影视| 亚洲美女色禁图| 亚洲欧美资源在线| 亚洲国产美女| 久久精品人人做人人综合 | 欧美一级一区| 欧美日韩亚洲激情| 日韩一级精品视频在线观看| 久久久久久夜| 久久精品日韩欧美| 国产综合第一页| 久久久亚洲欧洲日产国码αv| 日韩小视频在线观看专区| 欧美国产精品一区| 一本色道久久综合一区| 亚洲国产精品高清久久久| 牛牛精品成人免费视频| 亚洲精品欧美极品| 亚洲精品影院| 国产精品一级| 亚洲第一区在线观看| 欧美理论在线| 香蕉久久国产| 噜噜噜在线观看免费视频日韩| 亚洲国产综合91精品麻豆| 亚洲第一福利在线观看| 国产精品久久久久久久久久免费| 午夜精品久久久99热福利| 欧美在线视频一区二区| 亚洲欧洲精品一区二区三区波多野1战4 | 久久只精品国产| 亚洲日本无吗高清不卡| 久久精品女人的天堂av| 亚洲欧美乱综合| 最近中文字幕mv在线一区二区三区四区 | 久久在线91| 欧美一级片在线播放| 欧美大成色www永久网站婷| 午夜精品免费| 欧美日韩一区二区三区在线| 免费不卡亚洲欧美| 国产在线不卡视频| 亚洲一区日韩| 亚洲摸下面视频| 欧美色欧美亚洲高清在线视频| 麻豆成人在线| 在线观看国产成人av片| 久久av一区二区三区漫画| 欧美一级在线视频| 国产精品试看| 在线观看成人av电影| 蜜臀a∨国产成人精品| 欧美电影免费观看高清| 亚洲激情电影中文字幕| 欧美福利一区二区| 亚洲人www| 亚洲欧美综合精品久久成人 | 久久高清免费观看| 欧美午夜精品久久久久久久| 亚洲精品乱码久久久久久久久 | 性欧美大战久久久久久久免费观看| 欧美国产先锋| 最新日韩精品| 国产精品网红福利| 久久综合久久88| 在线中文字幕一区| 久久婷婷国产综合国色天香| 亚洲国产欧洲综合997久久| 欧美日韩网址| 免费观看成人| 午夜精品福利一区二区三区av| 免费观看在线综合| 亚洲欧美日韩一区二区在线| 在线免费观看欧美| 国产精品久久久久久久久免费| 男女精品视频| 久久久久国色av免费看影院| 99re热这里只有精品视频| 久久先锋资源| 久久全球大尺度高清视频| 亚洲一区久久| 中国亚洲黄色| 99精品福利视频| 亚洲欧洲三级电影| 伊人精品在线| 国内精品**久久毛片app| 国产精品乱码一区二三区小蝌蚪 | 一区二区高清视频在线观看| 老鸭窝毛片一区二区三区| 新片速递亚洲合集欧美合集| 亚洲女同同性videoxma| 午夜宅男久久久| 欧美怡红院视频| 久久久久国产一区二区三区四区 | 久久精品视频免费观看| 久久国产日韩| 国产一区二区三区四区| 亚洲一区二区三区在线播放| 一区二区三区回区在观看免费视频| 亚洲欧洲日本国产| 日韩视频免费观看高清在线视频| 亚洲人成网站色ww在线| 一区二区免费在线观看| 亚洲欧美国产精品va在线观看| 亚洲午夜久久久久久久久电影院| 亚洲午夜久久久久久久久电影网| 亚洲欧美怡红院| 久久网站热最新地址| 欧美三级乱人伦电影| 国产亚洲永久域名| 亚洲美女av黄| 久久婷婷国产综合国色天香| 亚洲日本中文| 午夜在线a亚洲v天堂网2018| 美国成人直播| 国产在线视频不卡二| 亚洲一区日韩在线| 亚洲国产精品成人综合色在线婷婷| 亚洲午夜羞羞片| 欧美日韩精品一区二区三区四区| 狠狠狠色丁香婷婷综合激情| 亚洲影院在线观看| 欧美高清视频在线观看| 伊人男人综合视频网| 欧美在线|欧美| 亚洲综合精品四区| 欧美日韩精品一区| 一区二区三区免费看| 亚洲激情视频网| 欧美黄色一区二区| 99精品欧美一区二区蜜桃免费| 欧美高清视频免费观看| 免费欧美在线视频| 亚洲第一成人在线| 亚洲春色另类小说| 欧美国产亚洲精品久久久8v| 亚洲视频综合在线| 亚洲欧美日韩综合aⅴ视频| 99re这里只有精品6| 欧美亚州在线观看| 免费成人美女女| 欧美日韩精品三区| 亚洲一区二区成人在线观看| 久久精品日产第一区二区| 亚洲一区二区三区在线观看视频| 欧美精品成人| 亚洲国产日韩欧美| 国产精品专区第二| 亚洲新中文字幕| 亚洲剧情一区二区| 久久久久综合一区二区三区| 久久精品天堂| 国产精品久久久久久妇女6080 | 模特精品在线| 国产日韩欧美精品| 亚洲无亚洲人成网站77777| 亚洲国产欧美久久| 久久黄色级2电影| 这里只有精品在线播放| 亚洲欧美www| 国产精品私拍pans大尺度在线| 亚洲视频在线观看网站| 久久综合99re88久久爱| 欧美一进一出视频| 国产精品欧美日韩| 亚洲麻豆国产自偷在线| 91久久精品日日躁夜夜躁国产| 久久久999成人| 久久九九免费视频| 狠狠干狠狠久久| 牛牛国产精品| 一本色道久久综合精品竹菊 |