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

Note of Justin

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

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

留言簿(14)

搜索

  •  

積分與排名

  • 積分 - 53598
  • 排名 - 433

最新評(píng)論

閱讀排行榜

評(píng)論排行榜

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

Justin 于 2009-10-26

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

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

道理很簡(jiǎn)單。怎么洗呢:

  • 對(duì)于內(nèi)建的對(duì)象類型(例子?int),一定要親自初始化他們,因?yàn)?em>有時(shí)候C++不會(huì)幫你干這種沒(méi)有技術(shù)含量的活@#¥%
  • 對(duì)于對(duì)象自身的成員,推薦的方法是在構(gòu)造函數(shù)的初始化列表來(lái)干這個(gè)活。
    注意,如果只是簡(jiǎn)單的在構(gòu)造函數(shù)里將變量一一賦值,那只是“賦值”,不是“初始化”。前者的效率要比后者低,因?yàn)榍罢呦葮?gòu)造了對(duì)象再對(duì)他們賦值,而后者一石二鳥(niǎo),畢其功于一役,在構(gòu)造的同時(shí)就也把值賦了(多好的孩子!)。這里還沒(méi)加上拷貝構(gòu)造函數(shù)的可能開(kāi)銷,還有一些類型如const變量、引用(reference)是不能用賦值的形式“初始化”的……
    下面就有兩個(gè)程序片段的例子對(duì)比(最恨貼代碼的了,沒(méi)有一點(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)初始化完畢。通篇幾乎都在說(shuō)沒(méi)有什么技術(shù)含量,最后逼得大師給了一點(diǎn)有技術(shù)含量的內(nèi)容:
    當(dāng)不同的對(duì)象的初始化存在相互依賴時(shí),某個(gè)對(duì)象沒(méi)有初始化有可能導(dǎo)致另外一個(gè)對(duì)象初始化的失敗。
    比如說(shuō),呃……我又要比如說(shuō)了,吃飯前要保證做飯的自來(lái)水是干凈的,也要保證抓飯的手(哪國(guó)的?)也是干凈的。要保證手是干凈的就要洗手,洗手的前提是自來(lái)水是干凈的。這個(gè)時(shí)候手和自來(lái)水是否干凈這兩個(gè)前提之間就有了依賴關(guān)系。
    當(dāng)初始化涉及到非局部靜態(tài)對(duì)象(non-local static object)時(shí),問(wèn)題更加明顯:非局部靜態(tài)對(duì)象如果定義在不同的文件中,他們就有可能位于不同的編譯單元(translation unit),因?yàn)檫@些對(duì)象到底誰(shuí)先被初始化是不可預(yù)知的。(也就是說(shuō)我們可能在洗手前并不知道水是不是已經(jīng)弄干凈了)

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

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

?

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

Feedback

# re: Effective C++ 炒冷飯– Item 4 對(duì)象的初始化 2009-12-16 00:16 陳梓瀚(vczh)
發(fā)布的時(shí)候有一個(gè)選項(xiàng)可以放到首頁(yè)的。  回復(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私拍在线观看| 一区二区高清在线观看| 亚洲欧美久久久| 激情亚洲成人| 日韩一区二区免费看| 国产欧美精品一区| 欧美激情视频在线播放| 国产乱码精品一区二区三| 欧美搞黄网站| 国产欧美日韩综合一区在线观看 | 久久青青草综合| 亚洲性xxxx| 狼人天天伊人久久| 欧美在线观看一区二区三区| 嫩草成人www欧美| 久久久久综合网| 国产精品第一页第二页第三页| 蜜臀av在线播放一区二区三区| 欧美精品一卡| 亚洲人成高清| 在线观看91久久久久久| 亚洲尤物在线| 亚洲性色视频| 欧美日韩免费看| 亚洲清纯自拍| 亚洲国产成人精品久久久国产成人一区 | 亚洲毛片在线看| 国内精品国语自产拍在线观看| 99在线热播精品免费| 亚洲黄色成人久久久| 久久精品国产999大香线蕉| 亚洲永久免费av| 国产精品扒开腿做爽爽爽视频| 日韩视频精品在线| 这里只有精品电影| 欧美激情视频一区二区三区免费| 免费成人美女女| 亚洲日本理论电影| 欧美国产精品久久| 亚洲国产精品久久久久婷婷884| 一区二区三区在线观看欧美| 欧美有码视频| 性欧美精品高清| 国内自拍亚洲| 久久久国产午夜精品| 久久色在线播放| 在线观看日韩av电影| 亚洲一区二区三区久久| 欧美尤物巨大精品爽| 国产一区二区0| 香蕉精品999视频一区二区| 性欧美xxxx大乳国产app| 国产欧美日韩免费| 久久久精品国产99久久精品芒果| 玖玖综合伊人| 亚洲精品中文字| 欧美日韩四区| 性欧美精品高清| 麻豆九一精品爱看视频在线观看免费| 怡红院精品视频| 欧美国产在线电影| 亚洲午夜久久久久久尤物 | 亚洲激情成人网| 欧美激情中文字幕在线| 亚洲美女视频在线观看| 亚洲欧美中文日韩v在线观看| 午夜精品久久久久久久久久久久| 免费久久精品视频| 99亚洲伊人久久精品影院红桃| 欧美视频在线观看| 性伦欧美刺激片在线观看| 欧美国产精品中文字幕| 一区二区激情视频| 国产亚洲午夜| 欧美福利影院| 欧美一区二区三区视频免费播放| 久久精品国产第一区二区三区最新章节| 一区二区激情| 影音先锋亚洲一区| 国产精品二区二区三区| 蜜月aⅴ免费一区二区三区| 亚洲欧美日韩国产精品| 亚洲另类在线视频| 免费黄网站欧美| 久久精品夜色噜噜亚洲a∨ | 国产精品色一区二区三区| 欧美v亚洲v综合ⅴ国产v| 欧美一区二区三区四区夜夜大片| 日韩视频免费观看高清完整版| 欧美激情女人20p| 噜噜噜91成人网| 久久精品欧美| 久久精精品视频| 欧美一区二区三区免费视频| 亚洲视频在线视频| 亚洲少妇一区| 99亚洲一区二区| 99视频一区二区| 日韩视频免费观看高清完整版| 亚洲国产精品福利| 伊人成人网在线看| 精品成人a区在线观看| 国产一区二区三区日韩| 国产夜色精品一区二区av| 国产婷婷色一区二区三区四区| 国产精品日本一区二区| 国产乱人伦精品一区二区| 国产精品另类一区| 国产精品羞羞答答| 国产视频在线观看一区| 国产亚洲欧洲一区高清在线观看 | 欧美三区美女| 欧美三级资源在线| 欧美午夜剧场| 国产精品色在线| 国产欧美精品一区aⅴ影院| 国产欧美 在线欧美| 欧美性猛交一区二区三区精品| 午夜精品一区二区三区在线| 亚洲在线不卡| 性欧美xxxx视频在线观看| 午夜精品在线视频| 久久久久久亚洲精品不卡4k岛国| 久久久精品久久久久| 欧美成人免费网| 欧美日韩在线精品| 国产美女扒开尿口久久久| 国产一区二区成人久久免费影院| 在线日本高清免费不卡| 亚洲日韩第九十九页| 一本一道久久综合狠狠老精东影业 | 男女精品视频| 亚洲日本在线观看| 日韩一级在线观看| 午夜激情综合网| 久久综合电影| 国产精品高清网站| 黄色日韩网站视频| 日韩一区二区精品葵司在线| 亚洲一区二区免费视频| 久久久久久夜精品精品免费| 欧美激情精品久久久六区热门| 99视频精品| 久久久蜜桃一区二区人| 欧美日韩免费在线| 国产在线拍偷自揄拍精品| 亚洲精品一区二区三区婷婷月| 亚洲综合好骚| 欧美成人国产va精品日本一级| 亚洲激情网站| 久久99在线观看| 欧美日韩国产一中文字不卡| 国产一区清纯| 洋洋av久久久久久久一区| 久久精品123| 日韩一级黄色大片| 久久影院午夜论| 国产欧美亚洲一区| 最新热久久免费视频| 欧美一区二区精品在线| 亚洲国产小视频在线观看| 午夜日韩电影| 欧美丝袜一区二区三区| 亚洲激情网址| 裸体一区二区三区| 亚洲一级二级| 欧美精品久久天天躁| 精品999网站| 欧美一区二区在线免费观看| 亚洲区欧美区| 久久在线播放| 狠狠v欧美v日韩v亚洲ⅴ| 性欧美精品高清| 在线视频免费在线观看一区二区| 麻豆精品在线视频| 伊人成人网在线看| 久久久人成影片一区二区三区观看| 一区二区三区www| 欧美激情一区二区三区在线视频观看 | 国产精品成人久久久久| 一区二区不卡在线视频 午夜欧美不卡在 | 国产综合婷婷| 午夜视频一区在线观看| 99精品国产高清一区二区| 欧美国产免费| 亚洲精品在线免费| 亚洲高清资源| 欧美成人一区二区三区| 亚洲第一级黄色片| 麻豆freexxxx性91精品| 久久精品99久久香蕉国产色戒| 国产欧美在线视频| 欧美在线免费视频| 午夜久久一区| 国产一区二区三区成人欧美日韩在线观看| 午夜在线a亚洲v天堂网2018| 亚洲视频一区二区| 国产精品美女久久福利网站| 亚洲一区综合|