• <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  評論-36  文章-0  trackbacks-0
            class T{ /**/ };

            T fun(){  
            return T();  }

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


            當我看到上面這樣的代碼時,我便認為這個代碼無法編譯通過的,因為按我所知道的,函數fun所返回的是一個臨時對象,而臨時對象是不能被修改的,然而fun()=T()語句便恰恰是在對臨時對象進行修改。但是當我編譯之后卻傻眼了,居然通過了,我很納悶。
            后來在網友的幫助下,在標準中找到了答案:

            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. ]



            也就是說,在對內置類型進行賦值操作時,將調用內置的賦值操作符,而這種內置的要求左操作數必須是左值;而當對類類型對象進行賦值時,所調用的是重載的賦值操作符,但重載的操作符并沒有要求必須使用左值,也就是說,賦值操作符的左操作數可以是右值。
            后來得知,在C++中右值可以是一個對象,而“對象”就指的是“一段內存存貯區域”,但C中的右值則不是一個對象,他只是一個值。

            以上內容如有不對之處,還望不惜指正。

            對lvalue和rvalue的較詳細介紹請看文章<Lvalues and Rvalues>:http://m.shnenglu.com/zhaoyg/archive/2010/02/06/107405.html

            posted on 2010-02-10 21:35 zhaoyg 閱讀(459) 評論(0)  編輯 收藏 引用 所屬分類: C/C++學習筆記
            青青青国产成人久久111网站| 中文字幕无码av激情不卡久久| 久久精品一区二区影院| 久久国产精品成人片免费| 中文字幕无码av激情不卡久久| 99久久国产综合精品成人影院| 一本色综合网久久| 大香伊人久久精品一区二区| 欧洲性大片xxxxx久久久| 伊人热人久久中文字幕| 久久久久国产精品| 精品久久久久国产免费| 国产高清美女一级a毛片久久w| 99久久99久久久精品齐齐| 久久精品毛片免费观看| 欧洲精品久久久av无码电影| 久久久久无码精品国产不卡| 久久精品亚洲精品国产色婷 | 国产精品福利一区二区久久| 久久综合给合久久狠狠狠97色69| 欧美黑人又粗又大久久久 | 亚洲а∨天堂久久精品9966| 久久九九久精品国产| 午夜精品久久久久| 伊人久久精品无码av一区| 久久精品九九亚洲精品| 一级做a爰片久久毛片人呢| 久久久久亚洲AV成人网人人网站 | 久久久久99这里有精品10| 免费无码国产欧美久久18| 久久99精品久久久久久hb无码| 91久久九九无码成人网站| 人妻无码久久精品| 久久久亚洲欧洲日产国码二区 | 久久99精品免费一区二区| 亚洲人成无码网站久久99热国产| 亚洲国产另类久久久精品| 伊人久久大香线焦AV综合影院| 亚洲精品美女久久久久99| 99久久精品费精品国产| 久久99这里只有精品国产|