chap高級函數(shù)特性_第1頁
chap高級函數(shù)特性_第2頁
chap高級函數(shù)特性_第3頁
chap高級函數(shù)特性_第4頁
chap高級函數(shù)特性_第5頁
已閱讀5頁,還剩18頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、高級函數(shù)特性第二章第二章2回顧 傳統(tǒng)編程的缺點(diǎn) 對象 類 抽象 繼承 封裝 多態(tài)性3目標(biāo) 引用 默認(rèn)參數(shù) 內(nèi)聯(lián)函數(shù) 函數(shù)重載4按值傳遞 函數(shù)調(diào)用中復(fù)制參數(shù)的值 函數(shù)只能訪問自己創(chuàng)建的副本 對副本進(jìn)行的更改不會影響原始變量25100#255按引用傳遞 函數(shù)調(diào)用中傳遞參數(shù)的引用 主要優(yōu)點(diǎn) 函數(shù)可以訪問主調(diào)程序中的實(shí)際變量 提供一種將多個值從被調(diào)函數(shù)返回到主調(diào)程序的機(jī)制25100#1006向函數(shù)傳遞引用 2-1 引用提供對象的別名或可選名 “&”告訴編譯器將變量當(dāng)作引用 #include iostream.hvoid swap(int&i,int&j) int tmp=i;

2、i=j; j=tmp;void main() int x=1,y=2; swap(x,y);coutxendlyendl; 上面的程序如果改為指針傳遞呢?7向函數(shù)傳遞引用 2-2(chanshu.cpp) 引用就是對象本身 不要認(rèn)為 引用是指向?qū)ο蟮闹羔?引用是該對象的副本 大的數(shù)據(jù)結(jié)構(gòu)按引用傳遞,效率非常高8返回引用(reference.cpp) 返回引用不是返回變量的副本 函數(shù)頭中包含一個“&”int &fn(int &num) return(num);void main() int n1, n2; n1 = fn(n2);9常量引用 用于不希望修改對象,以及要把大

3、對象當(dāng)作輸入?yún)?shù)的情況 高效性和安全性double distance(const point& p1, const point& p2); 將引用聲明為常量,不能再綁定別的對象int const &ri = num1; 10函數(shù) 函數(shù)聲明 函數(shù)名 函數(shù)返回值的類型 函數(shù)的參數(shù)個數(shù)和類型 函數(shù)聲明可以不包含參數(shù)名 調(diào)用函數(shù)時可以不指定全部參數(shù)11函數(shù)的默認(rèn)參數(shù) 可以為參數(shù)提供默認(rèn)值void func(int = 1, int = 3, char = *);或void func(int num1,int num2 = 3,char ch = *);12參數(shù)的默認(rèn)值 2-1

4、一旦給一個參數(shù)賦了默認(rèn)值,后續(xù)所有參數(shù)也都必須有默認(rèn)值 使用缺省參數(shù)要避免混淆 void errfunc(int num1=2,int num2,char ch=+);/錯誤 默認(rèn)值的類型必須正確 默認(rèn)值可以在原型或者函數(shù)定義中給出,但不能在兩個位置同時給出 建議在原型聲明中指定默認(rèn)值13參數(shù)的默認(rèn)值 2-2 調(diào)用上面聲明的函數(shù) func()func(2,13,+); func(1); /第二個和第三個參數(shù)采用默認(rèn)值func(2,25); /第三個參數(shù)采用默認(rèn)值func(); /所有這三個參數(shù)都采用默認(rèn)值func(2,+);/錯誤! 如果遺漏了中間的參數(shù),編譯器將報錯14默認(rèn)參數(shù)的優(yōu)點(diǎn) 如果要

5、使用的參數(shù)在函數(shù)中幾乎總是采用相同的值,則默認(rèn)參數(shù)非常方便 通過添加參數(shù)來增加函數(shù)的功能時,默認(rèn)參數(shù)也非常有用15內(nèi)聯(lián)函數(shù) 2-1 通常的函數(shù)調(diào)用會節(jié)省內(nèi)存空間,但是會花費(fèi)一些額外的時間 內(nèi)聯(lián)函數(shù)節(jié)省短函數(shù)的執(zhí)行時間 inline float converter(float dollars); 16內(nèi)聯(lián)函數(shù) 2-2 非常短的函數(shù)適合于內(nèi)聯(lián) 函數(shù)體會插入到發(fā)生函數(shù)調(diào)用的地方fn1()fn1()fn1()fn1()fn1();語句;fn1();mfunc();fn1();funcy();main()main()重復(fù)地放到函數(shù)中的代碼放在內(nèi)聯(lián)函數(shù)中的代碼17函數(shù)重載 定義(chongzai.cpp)

6、 具有相同的名稱,執(zhí)行基本相同的操作,但是使用不同的參數(shù)列表Cout1;Cout“hello”;Coutname;18函數(shù)重載 如何使用 編譯器通過調(diào)用時參數(shù)的個數(shù)和類型確定調(diào)用重載函數(shù)的哪個定義 只有對不同的數(shù)據(jù)集完成基本相同任務(wù)的函數(shù)才應(yīng)重載19函數(shù)重載的優(yōu)點(diǎn) 不必使用不同的函數(shù)名 有助于理解和調(diào)試代碼 易于維護(hù)代碼20數(shù)據(jù)類型不同的重載 參數(shù)的類型不同,編譯器就能夠區(qū)分 int square(int);float square(float);double square(double);21參數(shù)個數(shù)不同的重載int square(int);/函數(shù)聲明int square(int,int,int);int asq = square(a)/函數(shù)調(diào)用int bsq = square(x,y,z) 編譯器會調(diào)用參數(shù)匹配的函數(shù) 與函數(shù)的聲明順序無關(guān) 不會考慮返回類型22函數(shù)重載的作用域規(guī)則 重載機(jī)制只有在函數(shù)聲明的作用域內(nèi)才有效 class firstpublic: void display();class secondpublic: void display();void main() fi

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論