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

            周四

            Posted on 2008-03-27 17:07 RichardHe 閱讀(162) 評論(1)  編輯 收藏 引用
            (1)對const的用法過去不是很明白,不過今天看了<<effective c++>>里面有一個巧妙的理解
            1 char *p            = "hello";             // 非const指針,
            2                                           // 非const數據
            3 const char *p        = "hello";           // 非const指針,
            4                                           // const數據
            5 char* const p        = "hello";           // const指針,
            6                                           // 非const數據
            7 const char* const p    = "hello";         // const指針,
            8                                           // const數據
            一般來說,你可以在頭腦里畫一條垂直線穿過指針聲明中的星號(*)位置,如果const出現在線的左邊,指針指向的數據為常量;如果const出現在線的右邊,指針本身為常量;如果const在線的兩邊都出現,二者都是常量。

            (2)“通過值來傳遞一個對象”的具體含義是由這個對象的類的拷貝構造函數定義的。這使得傳值成為一種非常昂貴的操作。
            如下面的代碼:
            1 student returnstudent(student s) { return s; }
            2 student plato;                     // plato(柏拉圖)在
            3                         // socrates(蘇格拉底)門下學習
            4 returnstudent(plato);                 // 調用returnstudent 

            這個看起來無關痛癢的函數調用過程,其內部究竟發生了些什么呢?

            簡單地說就是:首先,調用了student的拷貝構造函數用以將s初始化為plato;然后再次調用student的拷貝構造函數用以將函數返回值 對象初始化為s;接著,s的析構函數被調用;最后,returnstudent返回值對象的析構函數被調用。所以,這個什么也沒做的函數的成本是兩個 student的拷貝構造函數加上兩個student析構函數。


            為避免這種潛在的昂貴的開銷,就不要通過值來傳遞對象,而要通過引用:

            1 const student& returnstudent(const student& s)
            2 return s; }
            這會非常高效:沒有構造函數或析構函數被調用,因為沒有新的對象被創建。

            引用幾乎都是通過指針來實現的,所以通過引用傳遞對象實際上是傳遞指針。因此,如果是一個很小的對象——例如int——傳值實際上會比傳引用更高效。

            Feedback

            # re: 周四  回復  更多評論   

            2008-03-27 20:56 by yanvenhom
            const char *p,const是修飾char的。
            char* const p,const是修飾p的。
            握手,這個東東我也前不久剛搞懂。

            posts - 94, comments - 138, trackbacks - 0, articles - 94

            Copyright © RichardHe

            久久国产欧美日韩精品| 久久精品国产清自在天天线| 国产99久久久久久免费看| 精品久久人人妻人人做精品| 99久久精品免费看国产| 伊人久久大香线蕉亚洲五月天| 成人午夜精品无码区久久| 国产精品对白刺激久久久| 久久久久噜噜噜亚洲熟女综合| 欧美亚洲日本久久精品| 久久精品国产精品国产精品污| 久久久久亚洲av毛片大| 久久精品无码专区免费青青| 久久精品亚洲欧美日韩久久| 一本色道久久HEZYO无码| 97久久精品人人澡人人爽| 亚洲AV无码久久精品蜜桃| 精品国产乱码久久久久久浪潮| 久久久久亚洲AV成人片| 久久婷婷五月综合色奶水99啪 | 久久强奷乱码老熟女网站| 久久亚洲精品人成综合网| 欧美久久一级内射wwwwww.| av无码久久久久久不卡网站| 影音先锋女人AV鲁色资源网久久| 久久91这里精品国产2020| 情人伊人久久综合亚洲| 99精品久久精品| 精品免费tv久久久久久久| 久久精品九九亚洲精品| 久久久精品人妻一区二区三区蜜桃 | 亚洲va中文字幕无码久久不卡| 久久久99精品成人片中文字幕| 婷婷综合久久狠狠色99h| 91视频国产91久久久| 国产成年无码久久久久毛片| 一本色道久久88精品综合| 久久亚洲AV成人无码国产| 久久久久99精品成人片欧美| 狠狠88综合久久久久综合网 | 久久夜色精品国产欧美乱|