函数
1 函数的重载: 函数名相同,参数个数不同
参数个数相同,参数类型不同
函数的签名
重载和指针参数
例如:int temp(int * pnum1,int * pnum2);
int temp(long * pnum1,long * pnum2);
重载和引用参数
重载和const参数
2 函数模板
一个简章的函数模版
template<class T> T larger(T a, T b)
{
//函数体
}
创建模版的实例
larger(1.5,2.5);
显示指定模板参数板
larger<long>(num1,num2);
模板说明
template<> long * larger<long*> (long * a,long * b)
{
return *a>*b?a:b;
}
函数模板重载
long * larger(long * a,long * b);
带多个参数的函数模板 (第二个参数为模板的返回类型)
template <TReturn, class TArg> TReturn larger(TArg a,TArgb)
{return a>b?a:b;}
非类型的模板参数
例如(检查值的作用域):
template(class T,int upper,int lower) bool isin_range(T value)
{
return (value<=upper)&&(value>=lower);
}
3 函数指针
可用类和函数的重载来替代此功能
声明函数指针
例如(pFun指向一个函数,有两个参数long* 和int,返回值为long)
格式如下:
返回类型(指针名)(参数列表)
long (* pFun)(long *, int);
在使用函数指针调用函数之前,必需先初始化函数指针
代码如下:
long test(long * num1,int num2);
pFun=test;
在使用函数指针的时候就跟使用函数名是一样的
把函数作为参数传送
例如:函数原型
double sum_array(double array[],int length,double(*pfun)(double));
函数指针的数组
例如:
double fun1(double,double);
double fun2(double,double);
double fun3(double,double);
double (*pfun)(double,double)={fun1,fun2,fun3};
4 递归
例如计算一个数的阶乘
long function(long n)
{
if(1==n)
{
return n;
}
return n*function(n-1);
}
实现递归排序
1 函数的重载: 函数名相同,参数个数不同
参数个数相同,参数类型不同
函数的签名
重载和指针参数
例如:int temp(int * pnum1,int * pnum2);
int temp(long * pnum1,long * pnum2);
重载和引用参数
重载和const参数
2 函数模板
一个简章的函数模版
template<class T> T larger(T a, T b)
{
//函数体
}
创建模版的实例
larger(1.5,2.5);
显示指定模板参数板
larger<long>(num1,num2);
模板说明
template<> long * larger<long*> (long * a,long * b)
{
return *a>*b?a:b;
}
函数模板重载
long * larger(long * a,long * b);
带多个参数的函数模板 (第二个参数为模板的返回类型)
template <TReturn, class TArg> TReturn larger(TArg a,TArgb)
{return a>b?a:b;}
非类型的模板参数
例如(检查值的作用域):
template(class T,int upper,int lower) bool isin_range(T value)
{
return (value<=upper)&&(value>=lower);
}
3 函数指针
可用类和函数的重载来替代此功能
声明函数指针
例如(pFun指向一个函数,有两个参数long* 和int,返回值为long)
格式如下:
返回类型(指针名)(参数列表)
long (* pFun)(long *, int);
在使用函数指针调用函数之前,必需先初始化函数指针
代码如下:
long test(long * num1,int num2);
pFun=test;
在使用函数指针的时候就跟使用函数名是一样的
把函数作为参数传送
例如:函数原型
double sum_array(double array[],int length,double(*pfun)(double));
函数指针的数组
例如:
double fun1(double,double);
double fun2(double,double);
double fun3(double,double);
double (*pfun)(double,double)={fun1,fun2,fun3};
4 递归
例如计算一个数的阶乘
long function(long n)
{
if(1==n)
{
return n;
}
return n*function(n-1);
}
实现递归排序