• <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://m.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í)筆記
            亚洲国产精品无码久久青草| 久久成人国产精品二三区| 污污内射久久一区二区欧美日韩| 亚洲国产精品成人久久蜜臀| 久久亚洲精品成人av无码网站| 亚洲精品乱码久久久久久久久久久久| 狠狠狠色丁香婷婷综合久久五月| 精品久久久久国产免费 | 久久这里只精品国产99热| 久久精品国产亚洲7777| 久久AV高清无码| 热久久国产欧美一区二区精品| 韩国三级大全久久网站| 久久精品免费全国观看国产| 亚洲综合精品香蕉久久网97| 五月丁香综合激情六月久久| 精品久久久无码中文字幕| 久久婷婷五月综合色奶水99啪| 久久亚洲国产精品五月天婷| 精品久久久久久| 久久久久久午夜成人影院| 伊色综合久久之综合久久| 国内精品久久久久影院网站| 色综合久久久久网| 久久精品国产精品亚洲精品| MM131亚洲国产美女久久| 精品综合久久久久久97| 久久亚洲高清综合| 午夜精品久久久久久影视777| 99精品久久久久久久婷婷| 国产ww久久久久久久久久| 久久亚洲国产精品一区二区| 2021少妇久久久久久久久久| 国产精品久久久久久| 丰满少妇人妻久久久久久| 99久久婷婷免费国产综合精品| 久久精品欧美日韩精品| 久久国产色AV免费看| 亚洲综合精品香蕉久久网97| 国产精品热久久无码av| 亚洲精品无码久久久|