ch4 函數(shù)與預處理(2)_第1頁
ch4 函數(shù)與預處理(2)_第2頁
ch4 函數(shù)與預處理(2)_第3頁
ch4 函數(shù)與預處理(2)_第4頁
ch4 函數(shù)與預處理(2)_第5頁
已閱讀5頁,還剩16頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、劉從彬主要主要知識點知識點 引用作參數(shù) 內(nèi)聯(lián)函數(shù)的定義與特點 帶默認形參值函數(shù)的特點與使用 函數(shù)重載的概念與特點 重點重點 函數(shù)引用做參數(shù)(*) 內(nèi)聯(lián)函數(shù) 帶默認參數(shù)的函數(shù)函數(shù)參數(shù)的傳遞函數(shù)參數(shù)的傳遞Sample 4-4:輸入兩個整數(shù)a、b交換后輸出 void swap(int a,int b);int main()int x(5),y(10);cout調(diào)用前:x=xy=yendl;swap(x,y);cout調(diào)用后:x=xy=yendl;return 0;void swap(int a,int b)int t;t=a;a=b;b=t;運行結(jié)果: 用引用作形參用引用作形參void Swap(i

2、nt &a, int &b); /函數(shù)聲明int main()int x=5,y=10;cout調(diào)用前:x=xy=yendl; Swap(x,y); /函數(shù)調(diào)用cout調(diào)用后:x=xy=yendl;return 0;void swap(int &a,int &b)int t;t=a;a=b;b=t;運行結(jié)果: 引用(引用(*) 引用的概念:引用就是一個變量的別名 當定義一個引用時,應該同時將其初始化為另一個對象名 一旦一個引用被初始化后,就不能改為指向其他對象區(qū)分指針和引用:指針是表示其他地址的變量引用是一個對象的別名 聲明聲明一個引用一個引用 聲明聲明一個引用

3、的格式是一個引用的格式是: 類型名類型名+“&”+引用名引用名 例如例如:n是是m的一個引用:的一個引用:int m;int &n = m; n相當于相當于m的別名(綽號),對的別名(綽號),對n的任何操作就是對的任何操作就是對m的操作。的操作。 例如例如有人名叫王小毛,他的綽號是有人名叫王小毛,他的綽號是“三毛三毛”。說。說“三毛三毛” 怎么怎么怎么的,其實就是對王小毛說三道四。所以怎么的,其實就是對王小毛說三道四。所以n既不是既不是m的拷貝,也不是指向的拷貝,也不是指向m的指針,的指針,其實其實n就是就是m它自己。它自己。8 Page 8引引 用用 例題例題:將將k初始化初

4、始化為為i的的引用,引用,并將并將k=j:int i = 5; int j = 6;int &k = i; /讀作讀作“k是一個整型是一個整型i的引用,并被初始化為的引用,并被初始化為i” k = j; / k和和i的值都變成了的值都變成了6 語句語句k = j把把k的值改變成為的值改變成為6。由于。由于k是是i的引用的引用,所以,所以i的值也的值也變成了變成了6。5ik6ikvint a;vint &b=a;vfloat x1;vfloat &x2=x1;vx2=3; x1=?vb=10; a=? 舉一反三:函數(shù)參數(shù)的傳遞函數(shù)參數(shù)的傳遞Sample 4-4:輸入兩個整

5、數(shù)a、b交換后輸出 void swap(int a,int b);int main()int x(5),y(10);cout&x“”&yendl;cout調(diào)用前:x=xy=yendl;swap(x,y);cout調(diào)用后:x=xy=yendl;return 0;void swap(int a,int b)int t;t=a;a=b;b=t;cout&a“”&bendl;運行結(jié)果: 再看再看Sample 4-4:傳值和傳引用的比較:傳值和傳引用的比較void Swap(int &a, int &b); /函數(shù)聲明int main()int x=5,y

6、=10;cout&x“”&yendl;cout調(diào)用前:x=xy=yendl; Swap(x,y); /函數(shù)調(diào)用cout調(diào)用后:x=xy=yendl;return 0;void swap(int &a,int &b)int t;t=a;a=b;b=t;cout&a“”&bendl;運行結(jié)果: 內(nèi)內(nèi)聯(lián)函數(shù)聯(lián)函數(shù)12 聲明時使用關(guān)鍵字 inline。 作用:當編譯器發(fā)現(xiàn)某段代碼在調(diào)用一個內(nèi)聯(lián)函數(shù)時,它不是去調(diào)用該函數(shù),而是將該函數(shù)的代碼,整段插入到當前位置。這樣做的好處是省去了調(diào)用的過程,加快程序運行速度。注意:內(nèi)聯(lián)函數(shù)體內(nèi)不能有循環(huán)語句和switch

7、語句。內(nèi)聯(lián)函數(shù)的聲明必須出現(xiàn)在內(nèi)聯(lián)函數(shù)第一次被調(diào)用之前。功能簡單,規(guī)模較小而又使用頻繁的函數(shù)可以設(shè)計為內(nèi)聯(lián)函數(shù)。inline 類型說明符類型說明符 函數(shù)名(形參表)函數(shù)名(形參表)內(nèi)內(nèi)聯(lián)函數(shù)舉例聯(lián)函數(shù)舉例 (Sample 4-5Sample 4-5)求三個數(shù)中的最大數(shù)#includeusing namespace std;inline int max(int,int,int);int main()int i=10,j=20,k=30,m;m=max(i,j,k);coutmax=mendl;return 0;inline int max(int a,int b,int c)if(ab) a=b

8、;if(ac) a=c;return a;編譯時將被置換成:編譯時將被置換成:if(ij) i=j;if(ik) i=k; m=i;編譯系統(tǒng)在遇到函數(shù)調(diào)用max(i, j, k)時,就用max函數(shù)的代碼代替max(I,j,k),同時將實參代替形參14帶默認參數(shù)的函數(shù)帶默認參數(shù)的函數(shù) 函數(shù)在聲明時可以預先給出默認的形參值,調(diào)用時如給出實參,則采用實參值,否則采用預先給出的默認形參值。 例如:int max(int a,int b,int c)if(ab) a=b;if(ai1i2i3;i=max(i1,i2,i3);couti=id1d2d3;d=max(d1,d2,d3);coutd=dg1g

9、2g3;g=max(g1,g2,g3);coutg=gendl;return 0;int max(int a,int b,int c) if(ab) a=b; if(ac) a=c; return a; double max(double a,double b,double c) if(ab) a=b; if(ac) a=c; return a;long max(long a,long b,long c) if(ab) a=b; if(ac) a=c; return a;求最大數(shù)(參數(shù)個數(shù)不同)求最大數(shù)(參數(shù)個數(shù)不同) (SampleSample 4-74-7)int max(int, int

10、, int);int max(int,int);int main()int a=8,b=-12,c=27;coutmax(a,b,c)=max(a,b,c)endl;coutmax(a,b)=max(a,b)endl;return 0;int max(int x,int y,int z)if(xy) x=y;if(xz) x=z;return x;int max(int x,int y)if(xy) x=y;return x;形參類型不同形參類型不同int max(int a, int b);double max(double a, double b);形參個數(shù)不同形參個數(shù)不同int max(

11、int x, int y,int z);int max(int x, int y);函數(shù)重載的類別函數(shù)重載的類別思考:思考:判斷下列哪些組的函數(shù)構(gòu)成重載函數(shù),判斷下列哪些組的函數(shù)構(gòu)成重載函數(shù),那些不構(gòu)成重載函數(shù)。那些不構(gòu)成重載函數(shù)。 不能以形參名不能以形參名來區(qū)分重載函數(shù)來區(qū)分重載函數(shù) 不能以返回值不能以返回值來區(qū)分重載函數(shù)來區(qū)分重載函數(shù)int add(int x, int y);float add(float a, float b);int add(int x, int y);int add(int a, int b);int add(int x, int y);void add(int x, int y);int add(int x, int y) return x+y; float add(float x, float y); return x-y; 形參類型不同,形參類型不同,構(gòu)成重載函數(shù)構(gòu)成重載函數(shù) 形參類型

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論