亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

對C++遞增(增量)運算符重載的思考

2019-11-17 05:03:41
字體:
來源:轉載
供稿:網友

  在前面的章節中我們已經接觸過遞增運算符的重載,那時候我們并沒有區分前遞增與后遞增的差別,在通常情況下我們是分別不出++a與a++的差別的,但的確他們直接是存在明顯差別的。

  先看如下代碼:
#include <iostream>   
using namespace std;   
   
int main()   
{   
    int a=0; 
    ++(++a);//正確,(++a)返回的是左值 
    (a++)++;//錯誤,(a++)返回的不是左值 
    system("pause"); 
}   代碼中(a++)++編譯出錯誤,返回“++”需要左值的錯誤,這正是前遞增與后遞增的差別導致的,那么又是為什么呢?

  原因主要是由C++對遞增(增量)運算符的定義引發的。

他們之間的差別主要為以下兩點:

  1、運算過程中,先將對象進行遞增修改,而后返回該對象(其實就是對象的引用)的叫前遞增(增量)運算。在運算符重載函數中采用返回對象引用的方式編寫。

  2、運算過程中,先返回原有對象的值,而后進行對象遞增運算的叫后遞增(增量)運算。在運算符重載函數中采用值返回的方式編寫(這也正是前面(a++)++出錯誤的原因,(a++)返回的不是引用,不能當作左值繼續參加擴號外部的++運算),重載函數的內部實現必須創建一個用于臨時存儲原有對象值的對象,函數返回的時候就是返回該臨時對象。  那么在編寫運算符重載函數的時候我們該如何區分前遞增運算符重載函數與后遞增運算符重載函數呢?

  方法就是:在后遞增運算符重載函數的參數中多加如一個int標識,標記為后遞增運算符重載函數。

  具體見如下實例(例一為非成員方式,例二為成員方式)://例一 
 
//程序作者:管寧         
//站點:www.cndev-lab.com         
//所有稿件均有版權,如要轉載,請務必聞名出處和作者      
   
#include <iostream>   
using namespace std;   
   
class Test     
{     
    public:     
        Test(int a=0) 
        { 
            Test::a = a; 
        } 
    friend Test& Operator ++ (Test&); 
    friend Test operator ++ (Test&,int); 
    public: 
    int a; 
}; 
Test& operator ++ (Test &temp)//前遞增 

    temp.a++; 
    return temp; 

Test operator ++ (Test &temp,int)//后遞增,int在這里只起到區分作用,事實上并沒有實際作用 


    Test rtemp(temp);//這里會調用拷貝構造函數進行對象的復制工作 
    temp.a++; 
    return rtemp; 

int main() 

    Test a(100); 
    ++(++a); 
    cout<<a.a<<endl; 
    cout<<"觀察后遞增情況下臨時存儲對象的值狀態:"<<(a++).a<<endl;//這里正是體現后遞增操作先返回原有對象值地方 
    cout<<a.a<<endl; 
    (a++)++; 
    cout<<a.a<<endl;//由于后遞增是值返回狀態,所以(a++)++只對a做了一次遞增操作,操作后為104而非105。 
    system("pause"); 
} 更多文章 更多內容請看C/C++技術專題專題,或 //例二 
 
//程序作者:管寧         
//站點:www.cndev-lab.com         
//所有稿件均有版權,如要轉載,請務必聞名出處和作者      
   
#include <iostream>   
using namespace std;   
   
class Test     
{     
    public:     
        Test(int a=0) 
        { 
            Test::a = a; 
        } 
    Test& operator ++ (); 
    Test operator ++ (int); 
    public: 
    int a; 
}; 
Test& Test::operator ++ ()//前遞增 

    this->a++; 
    return *this; 

Test Test::operator ++ (int)//后遞增 

    Test rtemp(*this);//這里會調用拷貝構造函數進行對象的復制工作 
 
    this->a++; 
    return rtemp; 

int main() 

    Test a(100); 
    ++(++a); 

    cout<<a.a<<endl; 
    cout<<"觀察后遞增情況下臨時存儲對象的值狀態:"<<(a++).a<<endl;//這里正是體現后遞增操作先返回原有對象值地方 
    cout<<a.a<<endl; 
    (a++)++; 
    cout<<a.a<<endl;//由于后遞增是值返回狀態,所以(a++)++只對a做了一次遞增操作,操作后為104而非105。 
    system("pause"); 
}  通過對前后遞增運算的分析,我們可以進一步可以了解到,對于相同情況的單目運算符重載我們都必須做好這些區別工作,保證重載后的運算符符合要求。  更多文章 更多內容請看C/C++技術專題專題,或

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
成人免费激情视频| 91高潮在线观看| 动漫精品一区二区| 亚洲美女黄色片| 日韩在线免费高清视频| 日韩电视剧在线观看免费网站| 欧美大片免费观看| 中文字幕欧美在线| 精品视频久久久久久| 亚洲成色777777在线观看影院| 97在线精品视频| 国产精品视频中文字幕91| 国产精品永久免费在线| 97精品一区二区视频在线观看| 欧美黄色小视频| 欧美一级视频在线观看| 97欧美精品一区二区三区| 欧美激情高清视频| 亚洲精品动漫100p| 欧美电影免费观看高清完整| 亚洲夜晚福利在线观看| 日韩精品福利在线| 欧日韩在线观看| 欧美成人h版在线观看| 国产精品自产拍在线观| 麻豆国产精品va在线观看不卡| 欧美亚洲日本网站| 亚洲欧美综合区自拍另类| 亚洲自拍偷拍色图| 91极品女神在线| 欧美日韩一区二区三区在线免费观看| 亚洲经典中文字幕| 精品无码久久久久久国产| 日av在线播放中文不卡| 欧美日韩国内自拍| 欧美在线激情视频| 久久久久久久国产| 中文在线不卡视频| 国产成人亚洲精品| 欧美精品午夜视频| 亚洲欧洲日产国码av系列天堂| 国产日产欧美a一级在线| 久久久精品免费视频| 国产主播精品在线| 国产精品视频精品视频| 国产精品中文字幕在线| 一区二区三区美女xx视频| 久久99视频免费| 正在播放欧美视频| 国产午夜一区二区| 97久久国产精品| 日韩精品高清在线观看| 97在线观看视频| 亚洲精品第一国产综合精品| 美日韩精品免费观看视频| 91九色国产视频| 亚洲片在线资源| 国产99在线|中文| 亚洲成人精品久久| 精品在线小视频| 亚洲天堂开心观看| 亚洲美女av网站| 性欧美激情精品| 亚洲理论片在线观看| 国产精品吊钟奶在线| 国产精品观看在线亚洲人成网| 亚洲最大av网站| 亚洲在线视频观看| 日本一本a高清免费不卡| 黑人欧美xxxx| 日韩欧美国产视频| 国产丝袜一区二区| 日韩免费观看av| 亚洲女人天堂色在线7777| 亚洲人线精品午夜| 成人欧美一区二区三区在线湿哒哒| 日韩欧美aⅴ综合网站发布| 精品亚洲一区二区三区四区五区| 日韩一区在线视频| 成人两性免费视频| 国内精品久久久久| 亚洲一区二区三区乱码aⅴ蜜桃女| 欧美日韩国产精品一区二区三区四区| 欧美国产高跟鞋裸体秀xxxhd| 欧美激情一区二区三区在线视频观看| 日韩毛片在线观看| 日韩在线中文视频| 国产亚洲一级高清| 国产91色在线播放| 久久中国妇女中文字幕| 久久久久国产精品免费网站| 丝袜情趣国产精品| 欧美激情欧美激情| 久久久中文字幕| xxxx欧美18另类的高清| 欧美日韩高清区| 一区二区欧美亚洲| 欧美性猛交视频| 欧美特黄级在线| 综合久久五月天| 亚洲精品短视频| 亚洲高清久久久久久| 国产综合在线看| 亚洲风情亚aⅴ在线发布| 一区二区三区久久精品| 久久综合国产精品台湾中文娱乐网| 亚洲一区第一页| 2019日本中文字幕| 国内免费久久久久久久久久久| 日韩av快播网址| 亚洲精品不卡在线| 96pao国产成视频永久免费| 亚洲欧美日韩国产成人| 精品亚洲aⅴ在线观看| 欧美色视频日本高清在线观看| 亚洲码在线观看| 色综合导航网站| 亚洲男人的天堂网站| 亚洲毛片在线观看.| 91色p视频在线| www.99久久热国产日韩欧美.com| www.日韩免费| 国产婷婷色综合av蜜臀av| 成人精品一区二区三区| 亚洲欧美制服第一页| 日本精品中文字幕| 日韩在线视频免费观看| 欧美激情视频一区二区三区不卡| 免费91麻豆精品国产自产在线观看| 日韩精品极品在线观看| 亚洲午夜精品久久久久久久久久久久| 欧美性猛交xxxx免费看漫画| 国产精品欧美激情在线播放| 亚洲免费av片| 久久九九有精品国产23| 久久久噜噜噜久久中文字免| 日产日韩在线亚洲欧美| 97超级碰在线看视频免费在线看| 国产91成人在在线播放| 日本久久久久久久| 在线色欧美三级视频| 中文字幕一精品亚洲无线一区| 欧美一级成年大片在线观看| 色多多国产成人永久免费网站| 色综合91久久精品中文字幕| 日韩激情第一页| 国产精品视频公开费视频| 海角国产乱辈乱精品视频| 欧美高清自拍一区| 色一情一乱一区二区| 欧美激情一区二区三区久久久| 亚洲人成电影在线播放| 国产精品激情av在线播放| 日韩精品视频免费在线观看| 97久久久久久| 亚洲国产欧美一区二区丝袜黑人| 97超级碰碰碰久久久| 欧美激情啊啊啊| 亚洲欧洲视频在线| 国产精品久久久久久搜索| 人体精品一二三区| 成人免费视频网址| 亚洲视频综合网| 国产精品日日摸夜夜添夜夜av|