• <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>
            posts - 183,  comments - 10,  trackbacks - 0

            隱式類型轉(zhuǎn)換,其他類型的變量可以通過構(gòu)造函數(shù)隱式轉(zhuǎn)換為一個類類型的對象,這里隱式轉(zhuǎn)換會產(chǎn)生一個無名的臨時對象,這個對象是常量不能被修改。所以說,不能將其賦值給一個非 const 的引用,這樣編譯不通過,最好是賦值給 const 型的引用 const T&。也可以賦值給 值類型,const、非 const 都行,但是這種效率不高。

            這里只需注意通過隱式類型轉(zhuǎn)換產(chǎn)生的臨時對象是無名的常量對象。

            通過隱式類型轉(zhuǎn)換產(chǎn)生的臨時對象和通過函數(shù)返回值返回的一個臨時的無名對象不同。通過函數(shù)返回的臨時對象,可以是常量也可以是變量。如果是變量,我們還可以修改這個無名的變量,雖然這樣做沒有意義,一般情況下有副作用。因為本該修改的沒有得到修改。

            通過函數(shù)返回值得到的無名的臨時對象是否具有常量性,是由函數(shù)的返回值類型決定的。是有程序員自己定義函數(shù)的時候決定的。而隱式類型轉(zhuǎn)換生成的無名的臨時對象的常量性是由編譯器自動決定的,與程序員無關(guān)。

             

            防止隱式類型轉(zhuǎn)換可以通過 explicit 關(guān)鍵字。

             

            class T

            {

            public:

                T(
            int a = 1int b = 2) {}
            };



            T t;

            = 5;


            這樣是首先 5 轉(zhuǎn)換為一個無名的常量性臨時對象,然后復(fù)制給 t,這里用的賦值運算符是編譯器提供的默認(rèn) operator =。其形參類型為 const T&。

            如果程序員自己提供了 operator =,并且形參類型為 T& 而非 const T&。這樣編譯就會報錯。因為不能將常量復(fù)制給 非 const 引用。只是由 C++ 的語法決定的。

            一般情況下,如果不改變實參,在定義函數(shù)的時候都盡量將形參類型聲明為 const T&。這樣做的好處是效率高,并且避免不必要的麻煩。這是一種最為可靠和安全的方法。

             

            另外,隱式類型轉(zhuǎn)換和類型轉(zhuǎn)換操作符在一起的時候還容易產(chǎn)生二義性。這種情況下,最好針對各種不同的參數(shù)類型,進(jìn)行各種重載。但是還要考慮模板帶來的二義性等。

            posted on 2011-04-29 00:56 unixfy 閱讀(291) 評論(0)  編輯 收藏 引用

            只有注冊用戶登錄后才能發(fā)表評論。
            網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


            精品久久久久久国产免费了| 久久人人爽人人爽人人片av麻烦 | 亚洲色大成网站WWW久久九九| 久久99热这里只有精品66| 久久久久亚洲AV无码去区首| 国内精品伊人久久久影院| 欧美亚洲国产精品久久久久| 99久久精品国产麻豆| 91亚洲国产成人久久精品网址| 久久受www免费人成_看片中文 | 亚洲精品无码久久久影院相关影片 | 996久久国产精品线观看| 久久精品国产一区二区| 人妻无码αv中文字幕久久琪琪布| 久久国产乱子伦精品免费强| 怡红院日本一道日本久久 | 狠狠人妻久久久久久综合| 国内精品伊人久久久影院| 久久99热精品| 久久久亚洲欧洲日产国码二区| 超级碰久久免费公开视频| 亚洲va中文字幕无码久久不卡| 激情综合色综合久久综合| 久久天天躁夜夜躁狠狠| 色综合久久久久网| 亚洲国产精品18久久久久久| 中文国产成人精品久久亚洲精品AⅤ无码精品 | 亚洲综合久久夜AV | 国产精品久久久天天影视香蕉 | 久久精品视频网| 亚洲AV无码久久精品狠狠爱浪潮| 国产三级观看久久| 色综合久久中文色婷婷| 国产成人精品久久免费动漫| 久久影院综合精品| 亚洲av成人无码久久精品| 思思久久精品在热线热| 伊人久久综合精品无码AV专区| 亚洲精品美女久久久久99小说 | 亚洲色欲久久久综合网| 亚洲午夜久久久久妓女影院|