亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        C++中運(yùn)算符的重載應(yīng)用

        2010-08-15 00:48:41
        辦公自動化 2010年22期
        關(guān)鍵詞:參數(shù)表運(yùn)算符賦值

        張 捷

        (黃岡職業(yè)技術(shù)學(xué)院 黃岡 438002)

        一、 什么是運(yùn)算符的重載

        運(yùn)算符重載是對已有的運(yùn)算符賦予多重含義,使同一個運(yùn)算符作用于不同類型的表達(dá)式的行為。運(yùn)算符重載的實(shí)質(zhì)就是函數(shù)重載。在實(shí)現(xiàn)過程中,首先把指定的運(yùn)算符表達(dá)式轉(zhuǎn)化為對運(yùn)算符函數(shù)的調(diào)用,運(yùn)算對象轉(zhuǎn)化為運(yùn)算符函數(shù)的實(shí)參,然后根據(jù)實(shí)參的類型來確定需要調(diào)用的函數(shù),這個過程是在編譯過程中完成的。

        例如:用“+”運(yùn)算符完成兩個實(shí)數(shù)、兩個復(fù)數(shù)、兩個字符串的相關(guān)運(yùn)算。兩個實(shí)數(shù)a=10,b=2,則兩個實(shí)數(shù)相加的結(jié)果是:a+b=10+2=12;兩個復(fù)數(shù):a=10+2i,b=2+10i,則兩個復(fù)數(shù)相加的結(jié)果是:a+b=12+12i;兩個字符串:a=“visual”,b=“ studio”,則兩字符串連接的結(jié)果是:a+b=“visual studio”。由上例可以看出,同一個運(yùn)算符“+”可以用于完成實(shí)數(shù)加法、復(fù)數(shù)加法及字符串連接等不同的運(yùn)算,得到不同的結(jié)果。這就是“+”運(yùn)算符的重載。因此,所謂的運(yùn)算符重載就是用同一個運(yùn)算符完成不同的運(yùn)算操作。

        二、 運(yùn)算符重載的規(guī)則

        對運(yùn)算符進(jìn)行重載需要遵守以下規(guī)則:

        (1)重載運(yùn)算符限制在C++語言中已有的并允許重載的運(yùn)算符。C++中的運(yùn)算符除五個運(yùn)算符“.、* 、::、sizeof、?:”之外,其它都可重載。

        (2)重載之后運(yùn)算符的優(yōu)先級和結(jié)合性均不改變。這就是說,對運(yùn)算符重載不改變運(yùn)算符的優(yōu)先級和結(jié)合性,并且運(yùn)算符重載時,單目運(yùn)算符只能重載為單目運(yùn)算符,雙目運(yùn)算符只能重載為雙目運(yùn)算符。

        (3)不能改變運(yùn)算符運(yùn)算數(shù)的個數(shù)。在運(yùn)算數(shù)中,至少有一個操作對象是自定義類型。

        (4)重載運(yùn)算含義必須清楚,不能產(chǎn)生二義性。運(yùn)算符的重載實(shí)質(zhì)是函數(shù)重載。運(yùn)算符重載一般分兩種形式,即重載為類的成員函數(shù)和重載為類的友元函數(shù),這兩種形式都可訪問類中的私有成員。

        三、 運(yùn)算符重載的實(shí)現(xiàn)

        在C++中,運(yùn)算符的重載有兩種方法:使用類的成員函數(shù)重載和使用fiend函數(shù)重載。下面通過實(shí)例來說明這兩種重載方法的實(shí)現(xiàn)。

        1、 使用成員函數(shù)重載運(yùn)算符

        運(yùn)算符重載函數(shù)為類的成員函數(shù)的常見格式為:

        返回類型 類名::operator重載運(yùn)算符(參數(shù)表)

        {函數(shù)體}

        其中,函數(shù)類型指定重載運(yùn)算符的返回值類型;operator是定義運(yùn)算符重載函數(shù)的關(guān)鍵字;運(yùn)算符是要重載的運(yùn)算符名稱;參數(shù)表中給出重載運(yùn)算所需要的參數(shù)和類型。一般情況下,單目運(yùn)算符采用成員函數(shù)形式重載時,操作數(shù)由對象的this指針給出,不需要參數(shù);雙目運(yùn)算符采用成員函數(shù)形式重載時,一個操作數(shù)是對象本身的數(shù)據(jù),由this指針指出。參數(shù)表的參數(shù)為第二操作數(shù),只需一個參數(shù)??傊?dāng)運(yùn)算符重載為類的成員函數(shù)時,除后置“++、--”外,函數(shù)的參數(shù)個數(shù)比原來的操作數(shù)個數(shù)少一個。

        實(shí)例:定義一個復(fù)數(shù)類,重載“=”運(yùn)算符,使這個運(yùn)算符能直接完成復(fù)數(shù)的賦值運(yùn)算。

        #include

        Calss complex

        {private:

        Float real,image;

        Public:

        Complex(float r=0,float i=0)

        {real=r;image=i;}//缺省構(gòu)造函數(shù)

        Void show(int i) //顯示輸出復(fù)數(shù)

        {count<<”c”<

        Void operator=(complex&c)

        {real=c.real;image=c.image;

        }

        };

        Void main(void)

        {complexc1(25,20),c2;

        C1.show(1);

        C2=c1;

        C2.show(2);

        }

        程序執(zhí)行后輸出:c1=25+50i c2=25+50i

        該重載函數(shù)的函數(shù)名為“operator=”,返回類型為void,形參為復(fù)數(shù)類對象的引用complex&c。當(dāng)程序執(zhí)行主函數(shù)中的賦值語句c2=c1而遇到賦值運(yùn)算符“=”時,自動調(diào)用賦值運(yùn)算符“=”重載函數(shù)“operator=()”,并將“=”運(yùn)算符右邊的操作數(shù)c1作為實(shí)參,左邊操作數(shù)c2作為調(diào)用重載函數(shù)的對象,即作了一次c2.operator=(c1)的函數(shù)調(diào)用。在函數(shù)的調(diào)用過程中,實(shí)參c1傳給形參c,在函數(shù)體內(nèi)完成了復(fù)數(shù)實(shí)部與虛部的賦值操作。

        2、 使用friend函數(shù)重載運(yùn)算符

        對于運(yùn)算符op,如果它的一個操作數(shù)為類A的對象,就可以將運(yùn)算符重載為A類的友元函數(shù),該函數(shù)有兩個形參,其中一個形參的類型是A類。經(jīng)過這樣的重載后,表達(dá)式k op t就相當(dāng)于函數(shù)調(diào)用operator op(k,t)。與使用成員函數(shù)定義的方法相比較,友元函數(shù)的一般定義格式只是在前面多了一個關(guān)鍵字friend,其他項(xiàng)目含義相同,除格式差別外,友元函數(shù)不是k所在類的成員函數(shù)。運(yùn)算符重載函數(shù)為友元函數(shù)的一般定義格式為:Friend類型operator重載運(yùn)算符(參數(shù)表){函數(shù)體}

        四、 應(yīng)用運(yùn)算符重載應(yīng)注意的問題

        由于C++語言支持函數(shù)重載,所以才能將運(yùn)算符當(dāng)成函數(shù)來使用。但是在編程過程中要適當(dāng)運(yùn)用運(yùn)算符重載:既不要因過分擔(dān)心自己不會用而不使用,它的本質(zhì)仍然是程序員們熟悉的函數(shù);也不要過度的使用,如果它不能使代碼變得更加易讀易寫,那就別用,否則會增加程序出錯的可能。同時在使用運(yùn)算符的重載時還要注意如下問題:

        ■不能改變C++內(nèi)部數(shù)據(jù)類型(如int,float等)的運(yùn)算符

        ■不能重載“.”,因?yàn)椤?”在類中對任何成員都有意義,已經(jīng)成為標(biāo)準(zhǔn)用法。

        ■不能重載目前C++運(yùn)算符集合中沒有的符號,如#,@,$等。原因有兩點(diǎn),一是難以理解,而是難以確定優(yōu)先級。

        ■對已經(jīng)存在的運(yùn)算符進(jìn)行重載時,不能改變優(yōu)先級規(guī)則,否則將引起混亂。

        [1]蘭添才.C++中函數(shù)重載與操作符重載的應(yīng)用探討[J].福建電腦,2003,(02).

        [2]藍(lán)雯飛,陸際光.C++語言的重載機(jī)制剖析[J].微計(jì)算機(jī)應(yīng)用,2000,(05).

        [3]李 智.C++宏,函數(shù)重載與模板機(jī)制[J].電腦,1995,(05).

        [4]李 智.C++函數(shù)重載與繼承機(jī)制的應(yīng)用[J].中國金融電腦,1995,(08).

        [5]沈慧娟.C++語言中運(yùn)算符重載的應(yīng)用研究[J].甘肅廣播電視大學(xué)學(xué)報,2006,(03).

        猜你喜歡
        參數(shù)表運(yùn)算符賦值
        關(guān)于1 1/2 … 1/n的一類初等對稱函數(shù)的2-adic賦值
        L-代數(shù)上的賦值
        鋼結(jié)構(gòu)有限元參數(shù)化分析系統(tǒng)研究
        老祖?zhèn)魇诨具\(yùn)算符
        用手機(jī)插頭的思路學(xué)習(xí)布爾運(yùn)算符
        電腦報(2019年16期)2019-09-10 07:22:44
        強(qiáng)賦值幺半群上的加權(quán)Mealy機(jī)與加權(quán)Moore機(jī)的關(guān)系*
        WPS在成形管生產(chǎn)過程中的運(yùn)用
        EXCEL在調(diào)度自動化系統(tǒng)數(shù)據(jù)庫維護(hù)中的應(yīng)用
        利用賦值法解決抽象函數(shù)相關(guān)問題オ
        C++運(yùn)算符重載剖析
        價值工程(2014年17期)2014-04-16 03:29:20
        日本老熟妇五十路一区二区三区 | 欧美成人午夜精品久久久| 亚洲最大av网站在线观看| 4hu四虎永久在线观看| 76少妇精品导航| 中年人妻丰满AV无码久久不卡| 中文字幕人成乱码中文乱码| 男女射精视频在线观看网站| 午夜裸体性播放| 人妻忍着娇喘被中进中出视频| 伊人影院综合在线| 日韩成人精品日本亚洲| 国产成人av三级三级三级在线| 青青草骚视频在线观看| 专干老熟女视频在线观看| 精品国产v无码大片在线观看 | 亚洲中文字幕不卡无码| 亚洲熟女乱一区二区三区| 少妇无码太爽了在线播放| 一本无码av中文出轨人妻| 国产高中生在线| 又色又爽又黄的视频网站| 91羞射短视频在线观看 | 中文字幕无线码| 亚洲免费观看在线视频| 国产高清在线精品一区αpp| 亚洲国产综合一区二区| 少妇久久久久久被弄高潮| 东北妇女xx做爰视频| 亚洲熟妇网| 午夜视频在线观看国产| av无码一区二区三区| 人妻无码中文字幕免费视频蜜桃 | 手机看片福利一区二区三区| 国产午夜精品福利久久| 女同在线网站免费观看| 国产三级av在线播放| 亚洲欧美日韩国产一区| 在线亚洲国产一区二区三区| 欧美牲交a欧美牲交aⅴ免费下载| 欧美成a人片在线观看久|