欢迎来到天天文库
浏览记录
ID:43946566
大小:349.50 KB
页数:47页
时间:2019-10-17
《函数的进阶应用》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、函數的進階應用戰勢不過奇正,奇正之變,不可勝窮也。奇正相生,如循環之無端,孰能窮之哉!《孫子兵法﹒勢篇》介紹函數的重載、參數的預設值、樣版函數,等等讓C++的函數在使用上更方便的語法。此外,也討論了幾個非常實用的問題,包括如何取得亂數、遞迴函數的設計以及排序與搜尋的相關演算法。101/47Chap10函數的進階應用10.1函數的重載10.2參數的預設值10.3樣版函數10.4亂數的取得10.5遞迴函數10.6排序與搜尋2函數的重載intMax(int,int);doubleMax(double,do
2、uble);//參數的資料型態不同doubleArea(doublex);doubleArea(doublex,doubley);//參數的數目不一樣3範例程式Overload.cpp:函數的重載//Overload.cpp#includeusingnamespacestd;//函數的原型doubleMax(double,double);doubleMax(double,double,double);//參數的數目不一樣4//-------主程式------------------
3、---------------intmain(){doublea=5.0,b=6.0,c=7.0;cout<<"Max(a,b)的值是:"<=y)?x:y;}doubleMax(doublex,doubley,doublez){
4、doubleTemp=x;if(x5、7範例程式Default.cpp:預設引數//Default.cpp#includeusingnamespacestd;//---宣告函數Area()--------------------doubleArea(doubleWidth,doubleLength=12.0);//---主程式----------------------------intmain(){doubleA;A=Area(6.5);//只用一個參數呼叫return0;}//---定義函數Area()------6、--------------doubleArea(doubleWidth,doubleLength){returnWidth*Length;}8預設引數函數的呼叫voidFune(float,floatx=0,intn=5,char="r");下面的呼叫都是正確的:Func(1.5);Func(3.2,1.0);Func(0.0,1.0,10,'a');不可以有下列的呼叫方式:Func(1.0,2.0,'a');//錯誤!9具有預設參數的重載函數兩個具有預設參數的重載函數Func()之原型:intFu7、nc(intn,intm=0,floatx=1.0);intFunc(intn,intm);這兩個函數無法以下列呼叫敘述正確區分:M=Func(2,3);//錯誤!10樣版函數(FunctionTemplate)templateTSum(Tx,Ty){returnx+y;}相當於同時宣告了許多名稱都叫做Sum()的函數,但其輸入和輸出的資料型態未定。樣版函數內可以使用不只一種暫定的資料型態:templateT1Func(T1x,T2y,8、T3z){//…函數內容}11樣版函數可以用來取代函數的重載templateTAbs(Tx){return(x>0)?x:-x;}相當於同時定義了三個函數:intAbs(intx){return(x>0)?x:-x;}floatAbs(floatx){return(x>0)?x:-x;}doubleAbs(doublex){return(x>0)?x:-x;}12準亂數產生器(pseudo-randomnumbergenerator)要得
5、7範例程式Default.cpp:預設引數//Default.cpp#includeusingnamespacestd;//---宣告函數Area()--------------------doubleArea(doubleWidth,doubleLength=12.0);//---主程式----------------------------intmain(){doubleA;A=Area(6.5);//只用一個參數呼叫return0;}//---定義函數Area()------
6、--------------doubleArea(doubleWidth,doubleLength){returnWidth*Length;}8預設引數函數的呼叫voidFune(float,floatx=0,intn=5,char="r");下面的呼叫都是正確的:Func(1.5);Func(3.2,1.0);Func(0.0,1.0,10,'a');不可以有下列的呼叫方式:Func(1.0,2.0,'a');//錯誤!9具有預設參數的重載函數兩個具有預設參數的重載函數Func()之原型:intFu
7、nc(intn,intm=0,floatx=1.0);intFunc(intn,intm);這兩個函數無法以下列呼叫敘述正確區分:M=Func(2,3);//錯誤!10樣版函數(FunctionTemplate)templateTSum(Tx,Ty){returnx+y;}相當於同時宣告了許多名稱都叫做Sum()的函數,但其輸入和輸出的資料型態未定。樣版函數內可以使用不只一種暫定的資料型態:templateT1Func(T1x,T2y,
8、T3z){//…函數內容}11樣版函數可以用來取代函數的重載templateTAbs(Tx){return(x>0)?x:-x;}相當於同時定義了三個函數:intAbs(intx){return(x>0)?x:-x;}floatAbs(floatx){return(x>0)?x:-x;}doubleAbs(doublex){return(x>0)?x:-x;}12準亂數產生器(pseudo-randomnumbergenerator)要得
此文档下载收益归作者所有