




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、第二章函數(shù) 函數(shù)一個C+程序有一個主函數(shù), 主函數(shù)是程序執(zhí)行的開始點。C+ 不允許函數(shù)定義嵌套。函數(shù)有兩種:標準庫函數(shù)和用戶自定義函數(shù)內聯(lián)函數(shù) 內聯(lián)函數(shù)內聯(lián)函數(shù)也稱內嵌或內置函數(shù),它的語法格式與普通函數(shù)一樣,只是在函數(shù)原型或函數(shù)定義標題頭之前加上關鍵字inline。inline int isnumber(char);inline int isnumber(char ch) return(ch=0 &ch=9)?1:0;編譯器為內聯(lián)函數(shù)創(chuàng)建一段源代碼,每遇到一次該函數(shù)的調用都用相應的一段代碼來代替。內聯(lián)函數(shù)應是使用頻率高,代碼卻很短的函數(shù)內聯(lián)函數(shù)#include using namespace
2、std;inline int isnumber(char); / int isnumber(char);(則正常函數(shù)調用)int main() char c; while (cinc & c!=n) if (isnumber( c ) coutyou entered a digitn; else cout=0 &ch=9)?1:0; 內聯(lián)函數(shù)的限制內聯(lián)函數(shù)中,不能含有開關例如switch和循環(huán)語句,例如while。 遞歸函數(shù)是不能被用來做內聯(lián)函數(shù)的。內聯(lián)函數(shù)中不能說明數(shù)組內聯(lián)函數(shù)是建議性,不是指令性內聯(lián)函數(shù)只適合于1-5行的小函數(shù)類結構中所有在類內部定義的函數(shù),都是內聯(lián)函數(shù)。虛函數(shù)不能是內聯(lián)函
3、數(shù)重載函數(shù) 重載函數(shù) C:void print_int(int);void print_char(char);void print_double(double); C+支持重載函數(shù):出現(xiàn)在同一個作用域的兩個函數(shù),如果具有相同的名字而形參表不同,則稱為重載函數(shù)。void print (int); void print (char); void print (double); C+編譯器根據(jù)傳遞的實參類型來判斷調用哪個函數(shù)。 print (-10);/調用print (int); print (a);/調用print (char); print (12.3);/調用print (double);
4、重載函數(shù) void print (double); void print (long); void print(double,char*); void print(char*,double); void fun( ) print (1L);/print(long) print (1.0);/print(double) print (2.0,”hello”);/print(double,char*) print (”hello”,3.0);/print(char*,double)重載函數(shù)匹配結果1.編譯器找到與實參最佳匹配的函數(shù)2.找不到形參與函數(shù)調用的實參匹配的函數(shù),編譯器給出編譯錯誤3.存在
5、多個與實參匹配的函數(shù),但沒有一個是明顯的最佳選擇。該調用具有“二義性”,也是錯誤的匹配重載函數(shù)void print(int);void print(double);void function() print(3); print(5.0); print(a); print(3.1415f);void print(long);void print(double);void function() int a; print(a);/有二義性print(long(a);或者print(double(a);(1)嚴格匹配(2)內部轉換(相容類型匹配)(3)通過用戶定義的轉換尋找求一個匹配重載的內部實現(xiàn)C+
6、用名字粉碎(name mangling)(名字細分、名字壓軋)的方法來改變函數(shù)名。用v,c,i,f,l,d,r 分別表示void,char,int,float,long,double,longdouble. int f (char a); / f_c int f (char a,int b,double c); /f_cid注意點返回值類型不能夠作為重載依據(jù)(區(qū)分、細分重載)void func (int);int func ( int);fucn(10); /error課堂練習int show(int);float show(float);float show(float);int show(
7、int a)coutint:aendl;return a;float show(float b)cout float:bendl;return b;double show(double c)cout double:cendl;return c;int _tmain(int argc, _TCHAR* argv)show(12);show(0.12);show(0.00000032);return 0;默認參數(shù)的函數(shù) 默認參數(shù)的函數(shù)void delay(int loops);void delay(int loops) if (loops=0)return; for (int i=0;iloops
8、;i+);將loops 定義成默認值為1000調用時:delay();delay(2000);默認參數(shù)也稱為缺省參量,也就是在函數(shù)聲明的時候已給定一個值,如果調用函數(shù)時沒有指定這個參數(shù)的值,編譯器就會自動地插上這個值。默認參數(shù)函數(shù)的聲明當又有聲明又有定義時,定義中不允許默認參數(shù)。若只有定義,則默認參數(shù)才可出現(xiàn)在函數(shù)定義中默認參數(shù)的順序規(guī)定定義時:不可以在一個默認參數(shù)后面又跟一個非默認參數(shù);調用時:一旦在一個函數(shù)調用中開始使用默認參數(shù),那么這個參數(shù)后面的所有參數(shù)都必須是默認的例:void foo(int a, int b=50, int c=0);void foo(int a, int b, b
9、ool c = false);void foo(int a, int b = 0, bool c);默認參數(shù)函數(shù)的例子#include using namespace std; void fun(int a,int b=3,int c=5) couta=a, b=b,c=c,endl; int main() fun(7); fun(7,9); fun(7,9,11); fun(); coutOK; return 0; 默認值的規(guī)定默認值可以是全局變量、全局常量、函數(shù)。不可以是局部變量。因為默認值是在編譯時確定的,必須是靜態(tài)確定的。函數(shù)重載與函數(shù)默認例1: void func(int,int);
10、void func(int=3,int=4);func(22,32);例2:void func(int); void func(int,int);例3:void func(int);void func(int,int=4);應該避免重載過程中的涉及參數(shù)個數(shù)的默認設置函數(shù)重載與函數(shù)默認int month,int day,int year;void Tdate() month=4; day=15; year=1995;void Tdate(int m) month=m; day=15; year=1995;void Tdate(int m,int d) month=m; day=d; year=1995;void Tdate(int m,int d,int y) month=m; day=d; year=y;int main() Tdate(); Tdate(1); Tdate(1,2); Tdate(1,2,3); return 0;默認函數(shù):void Tdate(int m=4,int d=15
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 建筑工程鋼筋焊接協(xié)議書
- 股東合作協(xié)議與章程制定指南
- 家電維修合同協(xié)議書
- 飯店經營承包合同
- 建材戰(zhàn)略合作協(xié)議合同
- 圍墻施工合同圍墻合同
- 小區(qū)廣告牌合同書
- 金融中介服務費合同年
- 防盜門銷售合同協(xié)議書
- 交通運輸行業(yè)智能航運與港口方案
- 2025年極兔速遞有限公司招聘筆試參考題庫含答案解析
- 2024年青海省中考生物地理合卷試題(含答案解析)
- 蘇少版小學一年級下冊綜合實踐活動單元備課
- 八灘鎮(zhèn)示范鄉(xiāng)鎮(zhèn)衛(wèi)生院及中醫(yī)特色科室創(chuàng)建工作情況匯報
- 畢業(yè)設計-膽囊結石患者的護理計劃
- 倒排工期計劃表
- 項目承包制實施方案
- 鄂教版五年級下冊綜合實踐活動教案
- 平安個人信用貸款申請表(共3頁)
- 化工自動化控制儀表國家題庫
- 煙草專賣局卷煙打假經驗介紹材料:以打擊制售假煙網(wǎng)絡案件為抓手全面推進市場監(jiān)管上水平
評論
0/150
提交評論