C++ 幾種函數的解析

1、重載:同名不同參(參數的個數和類型不同)

區別於重寫:重寫是同樣的函數定義,重寫修改實現代碼

重載:

#include <iostream>
using namespace std;
int main (int argc, const char * argv[])
{
    int max(int a,int b);
    int max(int a,int b ,int c);
    
    int a = 8;
    int b = -12;
    int c = 27;
     
    
    cout<<"max(a,b,c)="<<max(a,b,c)<<endl;
    cout<<"max(a,b)="<<max(a,b)<<endl;
    
       
    
    
        return 0;
}
 int max(int a,int b,int c)
{
    if(b>a)
        a = b;
    if(c>a)
        a=c;
    
    return a;
        
}
  
int max(int a,int b)
{
    if (a>b) {
        return a;
    }else
    {
        return b;
    }
    
}

**********************************

2、函數模版:

建立一個通用函數,函數類型和形參類型不具體指定,用一個虛擬的類型代表

通用函數定義: typename <typename T >

temlate <typename T>//模版聲明

Tmax(T a,T b,T c)  //定義一個通用函數,用T作虛擬類型名

{if(b>a) a=b;
return a
}
int main(){

int m =15, int n = 125, int q=45;
 
   i = max(m,n,q);//調用模版函數,此時int代替了T  

}

3、有默認參數的函數:

很簡單的就是給形參一個默認值:float  findnumbera = 3.6;

對於我在重載函數所給出的例子中,用帶參函數也可以實現功能;

int max(int a,int b,int c = 0);

在比較兩個數的時候,第三個數默認爲0;

 

4、函數的嵌套調用:

C++中不允許作嵌套定義,不能完整的包含另一個函數

但是能夠嵌套調用很熟,(再調用一個函數的同時,又可以調用另一個函數)

注意:調用之前必須對沒一個函數作聲明;

 

5、函數的遞歸調用:

  在調用函數的過程中又直接或間接的調用函數本身,

   獻上一個例子:用遞歸法求階乘

 

3、有默認參數的函數:

很簡單的就是給形參一個默認值:float  findnumbera = 3.6;

對於我在重載函數所給出的例子中,用帶參函數也可以實現功能;

int max(int a,int b,int c = 0);

在比較兩個數的時候,第三個數默認爲0;

 

4、函數的嵌套調用:

C++中不允許作嵌套定義,不能完整的包含另一個函數

但是能夠嵌套調用很熟,(再調用一個函數的同時,又可以調用另一個函數)

注意:調用之前必須對沒一個函數作聲明;

 

5、函數的遞歸調用:

  在調用函數的過程中又直接或間接的調用函數本身,

   獻上一個例子:用遞歸法求階乘

 #include <iostream>
using namespace std;
long fun (int);
int main (int argc, const char * argv[])
{
    int m = 0;
    cout<<"please enter a number"<<endl;
    cin>>m;
    cout<<fun(m)<<endl; 
    return 0;

}
long fun(int n)
{
    long c;
    if(n==1)c =1;
    else
        c = fun(n-1)*n;
    
    return c;
    
}


 

 

 

 

 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章