c++学习笔记八

函数


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);
}
实现递归排序

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值