区别于重写:重写是同样的函数定义,重写修改实现代码
重载:
#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 findnumber(a = 3.6);
对于我在重载函数所给出的例子中,用带参函数也可以实现功能;
int max(int a,int b,int c = 0);
在比较两个数的时候,第三个数默认为0;
4、函数的嵌套调用:
C++中不允许作嵌套定义,不能完整的包含另一个函数
但是能够嵌套调用很熟,(再调用一个函数的同时,又可以调用另一个函数)
注意:调用之前必须对没一个函数作声明;
5、函数的递归调用:
在调用函数的过程中又直接或间接的调用函数本身,
献上一个例子:用递归法求阶乘
3、有默认参数的函数:
很简单的就是给形参一个默认值:float findnumber(a = 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;
}