版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
-引用是C++引入的新語言特性,是C++常用的一個引用就是*一變量〔目標(biāo)〕的一個別名,對引用的操作與對變量直接操作完全一樣。名;的引用,即別名說明:〔2〕類型標(biāo)識符是指目標(biāo)變量的類型?!?〕聲明引用時,必須同時對其進展初始化。〔4〕引用聲明完畢后,相當(dāng)于目標(biāo)變量名有兩個為其他變量名的別名。ra=1;等價于a=1;〔5〕聲明一個引用,不是新定義了一個變量,它.z..z.-〔6〕不能建立數(shù)組的引用。因為數(shù)組是一個由假設(shè)干個元素所組成的集合,所以無法建立一個數(shù)組的別引用應(yīng)用1、引用作為參數(shù)〔C++中〕又增加了一種同樣有效率的選擇〔在*些特殊voidswap(int&p1,int&p2)//此處函數(shù)的形參p1,p2都是引用{intp;p=p1;p1=p2;p2=p;}相應(yīng)的主調(diào)函數(shù)可寫為:main(){-cin>>a>>b;//輸入a,b兩變量的值swap(a,b);//直接以變量a和b作為實參調(diào)用swapcout<<a<<''<<b;//輸出結(jié)果}上述程序運行時,如果輸入數(shù)據(jù)1020并回車后,則輸出結(jié)果為2010。由【例2】可看出:〔2〕使用引用傳遞函數(shù)的參數(shù),在內(nèi)存中并沒有用引用比用一般變量傳遞參數(shù)的效率和所占空間都好?!?〕使用指針作為函數(shù)的參數(shù)雖然也能到達與使.z..z.-更容易使用,更清晰。給函數(shù)的數(shù)據(jù)不在函數(shù)中被改變,就應(yīng)使用常引用。標(biāo)變量名;的值進展修改,從而使引用的目標(biāo)成為const,到達了引用inta;constint&ra=a;ra=1;//錯誤a=1;//正確這不光是讓代碼更強健,也有些其它方面的需要。stringfoo();voidbar(string&s);則下面的表達式將是非法的:bar(foo());-bar("helloworld");原因在于foo()和"helloworld"串都會產(chǎn)生一個臨時對象,而在C++中,這些臨時對象都是const類型的。因此上面的表達式就是試圖將一個const類型的對象轉(zhuǎn)換為非const類型,這是非法的。量定義為const。3、引用作為返回值要以引用返回函數(shù)值,則函數(shù)定義時要按以下格式:類型標(biāo)識符&函數(shù)名〔形參列表及類型說明〕{函數(shù)體}說明:〔1〕以引用返回函數(shù)值,定義函數(shù)時需要在函數(shù)名前加&〔2〕用引用返回一個函數(shù)值的最大好處是,在內(nèi)存中不產(chǎn)生被返回值的副本。的方法返回函數(shù)值。#include<iostream.h>floattemp;//定義全局變量temp.z.-floatfn1(floatr);//聲明函數(shù)fn1float&fn2(floatr);//聲明函數(shù)fn2floatfn1(floatr)//定義函數(shù)fn1,它以返回值的方法返回函數(shù)值{temp=(float)(r*r*3.14);returntemp;}float&fn2(floatr)//定義函數(shù)fn2,它以引用方式返回{temp=(float)(r*r*3.14);returntemp;}voidmain()//主函數(shù){floata=fn1(10.0);//第1種情況,系統(tǒng)生成要返回值float&b=fn1(10.0);//第2種情況,可能會出錯〔不//不能從被調(diào)函數(shù)中返回一個臨時變量或局部變量.z.-floatc=fn2(10.0);//第3種情況,系統(tǒng)不生成返回值//可以從被調(diào)函數(shù)中返回一個全局變量的引用float&d=fn2(10.0);//第4種情況,系統(tǒng)不生成返回值的副本//可以從被調(diào)函數(shù)中返回一個全局變量的引用cout<<a<<c<<d;}引用作為返回值,必須遵守以下規(guī)則:〔1〕不能返回局部變量的引用。這條可以參照EffectiveC++[1]的Item31。主要原因是局部變量會在函數(shù)返回后被銷毀,因此被返回的引用就成為了"無所指"的引用,程序會進入未知狀態(tài)?!?〕不能返回函數(shù)內(nèi)部new分配的內(nèi)存的引用。這條可以參照EffectiveC++[1]的Item31。雖然不存在局new分配內(nèi)存的引用〕,又面臨其它為難局面。例如,被予一個實際的變量,則這個引用所指向的空間〔由new分配〕就無法釋放,造成memoryleak。條原則可以參照EffectiveC++[1]的Item30。主要原因是.z.-當(dāng)對象的屬性是與*種業(yè)務(wù)規(guī)則〔businessrule〕相關(guān)聯(lián)的時候,其賦值常常與*些其它屬性或者對象的狀態(tài)有關(guān),因此有必要將賦值操作封裝在一個業(yè)務(wù)規(guī)則當(dāng)中。如果其它對象可以獲得該屬性的非常量引用〔或指針〕,則對該屬性的單純賦值就會破壞業(yè)務(wù)規(guī)則的完整性。〔4〕引用與一些操作符的重載:流操作符<<和>>,這兩個操作符常常希望被連續(xù)的返回值應(yīng)該是一個仍然支持這兩個操作符的流引用??蛇x的其它方案包括:返回一個流對象和返回一個流對象指針。但是對于返回一個流對象,程序必須重新〔拷貝〕構(gòu)造一個新的流對象,也就是說,連續(xù)的兩個<<操作符實流指針則不能連續(xù)使用<<操作符。因此,返回一個流對的重要性以及無可替代性,也許這就是C++語言中引入流操作符一樣,是可以連續(xù)使用的,例如:*=j=10;或者(*=10)=100;賦值操作符的返回值必須是一個左值,以.z.-#include<iostream.h>int&put(intn);intvals[10];voidmain(){vals[0]=10;vals[9]=10;cout<<vals[0];cout<<vals[9];}int&put(intn){if(n>=0&&n<=9)returnvals[n];else{cout<<"subscripterror";returnerror;}}〔5〕在另外的一些操作符中,卻千萬不能返回引的Item23詳細的討論了這個問題。主要原因是這四個操.z.-作符沒有sideeffect,因此,它們必須構(gòu)造一個對象作為變量的引用,返回一個new分配的對象的引用、返回一個靜態(tài)對象引用。根據(jù)前面提到的引用作為返回值的三個為((a+b)==(c+d))會永遠為true而導(dǎo)致錯誤。所以可選剩下返回一個對象了。4、引用和多態(tài)引用是除指針外另一個可以產(chǎn)生多態(tài)效果的手段。這意味著,一個基類的引用可以指向它的派生類實例。classA;Bb;A&Ref=b;//用派生類對象初始化基類對象的引用Ref只能用來派生類對象中從基類繼承下來的成員,是基類引用指向派生類。如果A類中定義有虛函數(shù),.z.-決大塊數(shù)據(jù)或?qū)ο蟮膫鬟f效率和空間不如意的問題?!?〕用引用傳遞函數(shù)的參
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 圓周接力課件教學(xué)課件
- 2024乙丙雙方關(guān)于智能家居系統(tǒng)安裝與維護的合同
- 2024保險合同保險標(biāo)的及屬性規(guī)定
- 2024年司機配駕汽車租賃合同標(biāo)準(zhǔn)版
- 2024年度工程建設(shè)項目融資擔(dān)保合同
- 2024年居住區(qū)綠化托管協(xié)議
- 2024年廣告制作委托合同
- 2024年展覽廳知識產(chǎn)權(quán)保護合同
- 2024國有土地使用權(quán)合同解釋國有土地使用權(quán)收購合同
- 2024年度汽車銷售業(yè)績獎勵合同
- 第6課《我們神圣的國土》 (教學(xué)設(shè)計)-部編版道德與法治五年級上冊
- 模擬電子技術(shù)說課
- 2024年秋新精通版(三年級起)英語三年級上冊課件 Unit 5 Lesson 1
- 2024年應(yīng)急管理部所屬事業(yè)單位第二次招聘考試筆試高頻500題難、易錯點模擬試題附帶答案詳解
- 2024版CSCO淋巴瘤診療指南解讀
- 2024年陜西省中考英語試題及解析版
- GB/T 25356-2024機場道面除冰防冰液
- 18 《瀏覽數(shù)字博物館》(教學(xué)設(shè)計) 五年級信息技術(shù)武漢版
- 期中測試卷(1-4單元)試題-2024-2025學(xué)年人教版數(shù)學(xué)六年級上冊
- 建筑工程項目中的精益建造和可持續(xù)發(fā)展
- 大國三農(nóng)II-農(nóng)業(yè)科技版智慧樹知到期末考試答案章節(jié)答案2024年中國農(nóng)業(yè)大學(xué)
評論
0/150
提交評論