• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      C++運(yùn)算符重載剖析

      2014-04-16 03:29:20龐新法PANGXinfa
      價(jià)值工程 2014年17期
      關(guān)鍵詞:運(yùn)算符指針個(gè)數(shù)

      龐新法 PANG Xin-fa

      (陜西省委黨??萍冀萄胁?,西安 710061)

      (Shaanxi Province Party School of the CPC,Xi'an 710061,China)

      1 緒論

      自然語(yǔ)言中的“一詞多義”,反映到程序中就是重載。例如“行動(dòng)”、“銀行”,“行”到底發(fā)何音,是何意,要根據(jù)上下文理解。

      在C語(yǔ)言中,運(yùn)算符符“-”既表示兩數(shù)相減,又表示取一個(gè)數(shù)的相反數(shù);既可作用于整型數(shù)據(jù),又可作用于實(shí)型、指針等其它類(lèi)型的數(shù)據(jù),這就是運(yùn)算符重載。C++是C功能的擴(kuò)充,比C更完善,更全面。

      所謂運(yùn)算符重載就是同一個(gè)運(yùn)算符,根據(jù)不同的數(shù)據(jù)類(lèi)型有著不同的含義和運(yùn)算,具體含義要根據(jù)上下文理解。重載擴(kuò)充了C++預(yù)定義的運(yùn)算符的運(yùn)算范圍,運(yùn)算符既可對(duì)已有數(shù)據(jù)類(lèi)型進(jìn)行運(yùn)算,又可對(duì)用戶(hù)自己定義的新類(lèi)型數(shù)據(jù)進(jìn)行運(yùn)算,方便編程。

      2 運(yùn)算符重載語(yǔ)法形式

      格式:函數(shù)類(lèi)型operator運(yùn)算符(形參表)

      {函數(shù)體;}

      功能:operator與運(yùn)算符的組合就是函數(shù)名。

      運(yùn)算符重載實(shí)質(zhì)就是函數(shù)重載,C++在編譯過(guò)程中,把operator與運(yùn)算符的組合解釋為函數(shù)名,然后按照函數(shù)的定義、引用處理。

      例1 class Co//復(fù)數(shù)類(lèi)

      可重載的運(yùn)算符

      可重載的運(yùn)算符

      3 運(yùn)算符重載的規(guī)

      ①重載的運(yùn)算符有限制。②不能改變?cè)\(yùn)算符的優(yōu)先級(jí)、結(jié)合性、操作數(shù)的個(gè)數(shù)、語(yǔ)法結(jié)構(gòu)。③對(duì)已有的C++運(yùn)算符重載。④當(dāng)運(yùn)算符重載為類(lèi)的成員函數(shù)時(shí),函數(shù)的參數(shù)個(gè)數(shù)比原來(lái)的操作個(gè)數(shù)要少一個(gè)。原因是成員函數(shù)通過(guò)this指針隱式地訪(fǎng)問(wèn)類(lèi)對(duì)象的參數(shù);當(dāng)重載為類(lèi)的友元函數(shù)時(shí),參數(shù)個(gè)數(shù)與原操作數(shù)個(gè)數(shù)相同。⑤運(yùn)算符重載實(shí)質(zhì)上是函數(shù)重載,因此編譯程序按照函數(shù)重載的處理辦法對(duì)運(yùn)算符重載進(jìn)行處理。⑥舊類(lèi)型舊含義,新類(lèi)型新含義,新含義與舊含義功能相似。

      4 運(yùn)算符重載形式

      4.1 重載為類(lèi)的成員函數(shù) 如例1所示。程序中出現(xiàn)的表達(dá)式:x+y編譯程序?qū)⒔o解釋為:x.operator+(y),其中,x和y是Co類(lèi)的對(duì)象。operator+()是運(yùn)算+的重載函數(shù)。該運(yùn)算符重載函數(shù)僅有一個(gè)參數(shù)y??梢?jiàn),當(dāng)重載為成員函數(shù)時(shí),雙目運(yùn)算符僅有一個(gè)參數(shù)。對(duì)單目運(yùn)算符,重載為成員函數(shù)時(shí),不能再顯式說(shuō)明參數(shù)。重載為成員函數(shù)時(shí),總時(shí)隱含了一個(gè)參數(shù),該參數(shù)是this指針。this指針是指向調(diào)用該成員函數(shù)對(duì)象的指針。

      4.2 重載為友元函數(shù) 運(yùn)算符重載函數(shù)還可以為友元函數(shù)。當(dāng)重載友元函數(shù)時(shí),將沒(méi)有隱含的參數(shù)this指針。這樣,對(duì)雙目運(yùn)算符,友元函數(shù)有2個(gè)參數(shù),對(duì)單目運(yùn)算符,友元函數(shù)有一個(gè)參數(shù)。但是,有些運(yùn)行符不能重載為友元函數(shù),它們是:=,(),[]和->。

      重載為友元函數(shù)的運(yùn)算符重載函數(shù)的定義格式如下:

      對(duì)于雙目運(yùn)算符,重載為成員函數(shù)時(shí),僅一個(gè)參數(shù),另一個(gè)被隱含;重載為友元函數(shù)時(shí),有兩個(gè)參數(shù),沒(méi)有隱含參數(shù)。因此,程序中出現(xiàn)的x+y編譯程序解釋為:operator+(x,y)調(diào)用函數(shù)Co operator+(const coplex&c1,const Co&c2)進(jìn)行求值。

      5 重載輸出流運(yùn)算符<<

      例3 class Co//復(fù)數(shù)類(lèi)

      6 結(jié)語(yǔ)

      多態(tài)性是面向?qū)ο蟪绦蛟O(shè)計(jì)的重要支柱之一,而運(yùn)算符重載又是實(shí)現(xiàn)多態(tài)性的一個(gè)重要途徑。運(yùn)算符重載使得程序員把運(yùn)算符的使用擴(kuò)展到操作數(shù)是對(duì)象的情況,由運(yùn)算符構(gòu)成的表達(dá)式常常比函數(shù)調(diào)用更簡(jiǎn)潔易懂,熟練掌握運(yùn)算符重載,以提高C++編程能力。

      [1]錢(qián)能.C++程序設(shè)計(jì)教程[M].清華大學(xué)出版社,2006.

      [2]鄭莉.C++語(yǔ)言程序設(shè)計(jì)[M].清華大學(xué)出版社,2002.

      [3]楊俊清.C++程序設(shè)計(jì)[M].西安電子科技大學(xué)出版社,2003.

      猜你喜歡
      運(yùn)算符指針個(gè)數(shù)
      怎樣數(shù)出小正方體的個(gè)數(shù)
      老祖?zhèn)魇诨具\(yùn)算符
      等腰三角形個(gè)數(shù)探索
      怎樣數(shù)出小木塊的個(gè)數(shù)
      用手機(jī)插頭的思路學(xué)習(xí)布爾運(yùn)算符
      偷指針的人
      怎樣數(shù)出小正方體的個(gè)數(shù)
      為什么表的指針都按照順時(shí)針?lè)较蜣D(zhuǎn)動(dòng)
      基于改進(jìn)Hough變換和BP網(wǎng)絡(luò)的指針儀表識(shí)別
      ARM Cortex—MO/MO+單片機(jī)的指針變量替換方法
      武清区| 金沙县| 江安县| 信宜市| 永康市| 灌阳县| 锡林浩特市| 鹤壁市| 东海县| 东山县| 潞西市| 汤原县| 黎平县| 景泰县| 上饶县| 正安县| 鄂托克旗| 周至县| 尼勒克县| 福建省| 天祝| 罗田县| 弥勒县| 赤壁市| 平和县| 沈丘县| 垣曲县| 稻城县| 汨罗市| 班戈县| 三原县| 荆州市| 湘乡市| 大石桥市| 临沂市| 正安县| 都昌县| 略阳县| 邯郸县| 英山县| 北川|