• <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>
            隨筆-59  評(píng)論-36  文章-0  trackbacks-0
            class T{ /**/ };

            T fun(){  
            return T();  }

            int main()
            {
                fun() 
            = T();
                
            return 0;
            }


            當(dāng)我看到上面這樣的代碼時(shí),我便認(rèn)為這個(gè)代碼無法編譯通過的,因?yàn)榘次宜赖模瘮?shù)fun所返回的是一個(gè)臨時(shí)對(duì)象,而臨時(shí)對(duì)象是不能被修改的,然而fun()=T()語句便恰恰是在對(duì)臨時(shí)對(duì)象進(jìn)行修改。但是當(dāng)我編譯之后卻傻眼了,居然通過了,我很納悶。
            后來在網(wǎng)友的幫助下,在標(biāo)準(zhǔn)中找到了答案:

            3.10.5 
            The result of calling a function that does not return a reference is an rvalue. User defined operators are functions, and whether such operators expect or yield lvalues is determined by their parameter and return types.

            13.5.7
            The identities among certain predefined operators applied to basic types (for example, ++a ≡ a+=1) need not hold for operator functions. Some predefined operators, such as +=, require an operand to be an lvalue when applied to basic types; this is not required by operator functions.

            3.10
            An lvalue for an object is necessary in order to modify the object except that an rvalue of class type can also be used to modify its referent under certain circumstances. [Example: a member function called for an object (9.3) can modify the object. ]



            也就是說,在對(duì)內(nèi)置類型進(jìn)行賦值操作時(shí),將調(diào)用內(nèi)置的賦值操作符,而這種內(nèi)置的要求左操作數(shù)必須是左值;而當(dāng)對(duì)類類型對(duì)象進(jìn)行賦值時(shí),所調(diào)用的是重載的賦值操作符,但重載的操作符并沒有要求必須使用左值,也就是說,賦值操作符的左操作數(shù)可以是右值。
            后來得知,在C++中右值可以是一個(gè)對(duì)象,而“對(duì)象”就指的是“一段內(nèi)存存貯區(qū)域”,但C中的右值則不是一個(gè)對(duì)象,他只是一個(gè)值。

            以上內(nèi)容如有不對(duì)之處,還望不惜指正。

            對(duì)lvalue和rvalue的較詳細(xì)介紹請(qǐng)看文章<Lvalues and Rvalues>:http://www.shnenglu.com/zhaoyg/archive/2010/02/06/107405.html

            posted on 2010-02-10 21:35 zhaoyg 閱讀(462) 評(píng)論(0)  編輯 收藏 引用 所屬分類: C/C++學(xué)習(xí)筆記
            国产AⅤ精品一区二区三区久久| 欧美久久综合九色综合| 久久无码中文字幕东京热| 亚洲国产成人久久一区WWW| 久久电影网| 久久无码一区二区三区少妇| 一本久久免费视频| 精品久久久久久无码专区| 国产午夜精品久久久久免费视| 青青草国产精品久久久久| 久久乐国产精品亚洲综合| 精品久久久中文字幕人妻 | 漂亮人妻被黑人久久精品| 国产精品久久久久AV福利动漫| 亚洲一区中文字幕久久| 亚洲AⅤ优女AV综合久久久| 久久精品国产乱子伦| 久久精品国产一区二区三区日韩| 久久se这里只有精品| 久久久久久国产精品免费无码 | 青青草原1769久久免费播放| 久久一区二区三区免费| 97久久精品人妻人人搡人人玩| 婷婷久久精品国产| 久久99精品久久久久久| 香蕉久久夜色精品国产尤物| 精品国产乱码久久久久久郑州公司 | 亚洲AV无码久久精品蜜桃| 国产成人精品综合久久久| 亚洲伊人久久精品影院| 久久伊人亚洲AV无码网站| 国产精品久久久久久吹潮| 精产国品久久一二三产区区别| 精品久久人人妻人人做精品| 精品久久无码中文字幕| 久久青青草原亚洲av无码app| 亚洲午夜无码久久久久小说| 久久久久久久亚洲精品| 久久久WWW免费人成精品| 7国产欧美日韩综合天堂中文久久久久 | 久久国产劲爆AV内射—百度|