首頁(yè) 考試吧論壇 Exam8視線 考試商城 網(wǎng)絡(luò)課程 模擬考試 考友錄 實(shí)用文檔 求職招聘 論文下載
2011中考 | 2011高考 | 2012考研 | 考研培訓(xùn) | 在職研 | 自學(xué)考試 | 成人高考 | 法律碩士 | MBA考試
MPA考試 | 中科院
四六級(jí) | 職稱英語(yǔ) | 商務(wù)英語(yǔ) | 公共英語(yǔ) | 托福 | 雅思 | 專四專八 | 口譯筆譯 | 博思 | GRE GMAT
新概念英語(yǔ) | 成人英語(yǔ)三級(jí) | 申碩英語(yǔ) | 攻碩英語(yǔ) | 職稱日語(yǔ) | 日語(yǔ)學(xué)習(xí) | 法語(yǔ) | 德語(yǔ) | 韓語(yǔ)
計(jì)算機(jī)等級(jí)考試 | 軟件水平考試 | 職稱計(jì)算機(jī) | 微軟認(rèn)證 | 思科認(rèn)證 | Oracle認(rèn)證 | Linux認(rèn)證
華為認(rèn)證 | Java認(rèn)證
公務(wù)員 | 報(bào)關(guān)員 | 銀行從業(yè)資格 | 證券從業(yè)資格 | 期貨從業(yè)資格 | 司法考試 | 法律顧問(wèn) | 導(dǎo)游資格
報(bào)檢員 | 教師資格 | 社會(huì)工作者 | 外銷員 | 國(guó)際商務(wù)師 | 跟單員 | 單證員 | 物流師 | 價(jià)格鑒證師
人力資源 | 管理咨詢師考試 | 秘書資格 | 心理咨詢師考試 | 出版專業(yè)資格 | 廣告師職業(yè)水平
駕駛員 | 網(wǎng)絡(luò)編輯
衛(wèi)生資格 | 執(zhí)業(yè)醫(yī)師 | 執(zhí)業(yè)藥師 | 執(zhí)業(yè)護(hù)士
會(huì)計(jì)從業(yè)資格考試會(huì)計(jì)證) | 經(jīng)濟(jì)師 | 會(huì)計(jì)職稱 | 注冊(cè)會(huì)計(jì)師 | 審計(jì)師 | 注冊(cè)稅務(wù)師
注冊(cè)資產(chǎn)評(píng)估師 | 高級(jí)會(huì)計(jì)師 | ACCA | 統(tǒng)計(jì)師 | 精算師 | 理財(cái)規(guī)劃師 | 國(guó)際內(nèi)審師
一級(jí)建造師 | 二級(jí)建造師 | 造價(jià)工程師 | 造價(jià)員 | 咨詢工程師 | 監(jiān)理工程師 | 安全工程師
質(zhì)量工程師 | 物業(yè)管理師 | 招標(biāo)師 | 結(jié)構(gòu)工程師 | 建筑師 | 房地產(chǎn)估價(jià)師 | 土地估價(jià)師 | 巖土師
設(shè)備監(jiān)理師 | 房地產(chǎn)經(jīng)紀(jì)人 | 投資項(xiàng)目管理師 | 土地登記代理人 | 環(huán)境影響評(píng)價(jià)師 | 環(huán)保工程師
城市規(guī)劃師 | 公路監(jiān)理師 | 公路造價(jià)師 | 安全評(píng)價(jià)師 | 電氣工程師 | 注冊(cè)測(cè)繪師 | 注冊(cè)計(jì)量師
繽紛校園 | 實(shí)用文檔 | 英語(yǔ)學(xué)習(xí) | 作文大全 | 求職招聘 | 論文下載 | 訪談 | 游戲

計(jì)算機(jī)等級(jí)考試二級(jí)C++各章內(nèi)容摘要:第8章

  第8章 運(yùn)算符重載

  【考點(diǎn)一】 運(yùn)算符函數(shù)據(jù)與運(yùn)算符重載

  運(yùn)算符重載是計(jì)算機(jī)語(yǔ)言固有多態(tài)性的體現(xiàn),是構(gòu)成計(jì)算機(jī)語(yǔ)言的基礎(chǔ)之一。C++把重載的運(yùn)算符視為特殊的函數(shù),稱為運(yùn)算符函數(shù)。運(yùn)算符重載就是函數(shù)重載的一種特殊情況。像對(duì)待一般重載函數(shù)一樣,編譯系統(tǒng)能夠依據(jù)使用運(yùn)算符的不同環(huán)境,即參數(shù)(操作數(shù))的數(shù)量或類型的差異,區(qū)分同一運(yùn)算符的不同含義。"運(yùn)算符重載"是針對(duì)C++中原有運(yùn)算符進(jìn)行的,不可能通過(guò)重載創(chuàng)造出新的運(yùn)算符。除了.、.*、->*、::、?:這五個(gè)運(yùn)算符外,其他運(yùn)算符都可以重載。由于很多符號(hào)是一元運(yùn)算符和二元運(yùn)算符公用的,為了避免含混,不得為重載的運(yùn)算符函數(shù)設(shè)置默認(rèn)值,調(diào)用時(shí)也就不得省略實(shí)參。除了new和delete這兩個(gè)較為特殊運(yùn)算符以外,任何運(yùn)算符如果作為成員函數(shù)重載時(shí)不得重載為靜態(tài)函數(shù)。=、[ ]、()、->以及所有的類型轉(zhuǎn)換運(yùn)算符只能作為成員函數(shù)重載,而且不能是針對(duì)枚舉類型操作數(shù)的重載。運(yùn)算符函數(shù)的函數(shù)名是由運(yùn)算符前加關(guān)鍵字operator構(gòu)成的,在聲明運(yùn)算符或調(diào)用運(yùn)算符時(shí)都可以用這個(gè)名稱。

  【考點(diǎn)二】 典范運(yùn)算符的重載

  1.關(guān)于分?jǐn)?shù)類fractionfraction的聲明和定義包含在頭文件fraction.h和程序文件fraction.cpp中。一個(gè)標(biāo)準(zhǔn)的用fraction表示的分?jǐn)?shù)須滿足以下復(fù)印件:①分母永遠(yuǎn)為正,分?jǐn)?shù)和符號(hào)用分子表示;②分子分母互質(zhì),即總表示為最簡(jiǎn)分?jǐn)?shù)。fraction通過(guò)兩個(gè)私有數(shù)據(jù)成員num和den分別保存分子和分母,并在必要時(shí)調(diào)用standardize函數(shù)進(jìn)行標(biāo)準(zhǔn)化處理,以使num和den的值滿足標(biāo)準(zhǔn)分?jǐn)?shù)的條件。gcd是求兩個(gè)整數(shù)的最大公約數(shù)的函數(shù),standardize在化簡(jiǎn)分?jǐn)?shù)時(shí)要調(diào)用它。

  2.重載取負(fù)運(yùn)算符"-"因?yàn)閒raction用分子的符號(hào)代表整個(gè)分?jǐn)?shù)的符號(hào),因此所謂"取負(fù)"只需對(duì)分子num取負(fù)就可以了。由于取負(fù)運(yùn)算符"-"是一元運(yùn)算符,當(dāng)作為成員函數(shù)重載時(shí)參數(shù)表中沒(méi)有參數(shù),那個(gè)唯一的操作數(shù)以this指針的形式隱藏在參數(shù)表中。為此,只需要在fraction.h的類聲明中增加:fraction poerator -()const { return fraction(-num,den);}就可以了。由于在類聲明中直接給出了完整定義,因此是一個(gè)inline函數(shù)。"-"是一個(gè)典型的一元運(yùn)算符,除++、--外的其他一元運(yùn)算符的重載都可以參考這里描述的方法。

  3.重載加法運(yùn)算符"+"" +"是一個(gè)二元運(yùn)算符,因此作為成員函數(shù)重載時(shí)參數(shù)表中只有一個(gè)參數(shù),對(duì)應(yīng)于第二操作數(shù),而第一操作數(shù)就是對(duì)象本身,僅以this指針的形式隱藏在參靈敏表中。"+"是一個(gè)典型的二元運(yùn)算符,除賦值類運(yùn)算符外的其他二元運(yùn)算符的重載都可以參考這里描述的方法。

  4.重載增1運(yùn)算符"+ +"+ +既可以是前綴運(yùn)算符(前增1),又可以是后綴運(yùn)算符(后增1)。為了區(qū)分這兩種情況,重載這兩個(gè)運(yùn)算符時(shí)必須在格式上有所區(qū)別:重載后綴+ +時(shí)必須多一個(gè)虛擬參數(shù):int,因此從形式上看像是一個(gè)二元運(yùn)算符重載。

  5.重載類型轉(zhuǎn)換符"long"類型轉(zhuǎn)換符必須作為成員函數(shù)重載。在重載類型轉(zhuǎn)換符時(shí),由于運(yùn)算符本身已經(jīng)表示出返回值類型,因此不需要返回值類型的聲明。一個(gè)分?jǐn)?shù)可以看成是由一個(gè)整數(shù)部分和一個(gè)純分?jǐn)?shù)部分組成的,為了取得一個(gè)分?jǐn)?shù)的整數(shù)部分,可為fraction重載類型轉(zhuǎn)換符long。為此可在fraction.h的類聲明中增加:opertator long()const { return num/den;}

  6.重載賦值運(yùn)算符"="賦值運(yùn)算符只能作為成員函數(shù)重載。常見的真正需要重載賦值運(yùn)算符的情況是:類中包含指向動(dòng)態(tài)空間的指針賦值運(yùn)算符=的重載應(yīng)注意以下幾點(diǎn):①返回值聲明為引用,而函數(shù)體中總是用語(yǔ)句return *this;返回;②如果參數(shù)被聲明為指向同類對(duì)象的引用或指針,應(yīng)判別所指向?qū)ο蟮氖欠衽c被賦值對(duì)象為同一對(duì)象,如果是,立即返回,不做任何賦值處理;③如果被賦值對(duì)象占用了動(dòng)態(tài)空間或其他資源,應(yīng)首先釋放這些資源,以便接收新的資源; ④如果參數(shù)被聲明為指針或引用,通常應(yīng)加上const修飾;⑤如果參數(shù)被聲明為指針,應(yīng)判別是否為空,以便做出特殊處理;⑥一個(gè)類如果需要重載運(yùn)算符=,通常也就需要定義自己特有的拷貝構(gòu)造函數(shù),反之亦然。

希望與更多計(jì)算機(jī)等級(jí)考試的網(wǎng)友交流,請(qǐng)進(jìn)入計(jì)算機(jī)等級(jí)考試論壇

更多信息請(qǐng)?jiān)L問(wèn):考試吧計(jì)算機(jī)等級(jí)考試欄目

文章搜索
版權(quán)聲明:如果計(jì)算機(jī)等級(jí)考試網(wǎng)所轉(zhuǎn)載內(nèi)容不慎侵犯了您的權(quán)益,請(qǐng)與我們聯(lián)系800@exam8.com,我們將會(huì)及時(shí)處理。如轉(zhuǎn)載本計(jì)算機(jī)等級(jí)考試網(wǎng)內(nèi)容,請(qǐng)注明出處。