C++中传送函数指针

时间:2014-06-18 07:29:09   收藏:0   阅读:178

函数指针是一种非常好的类型。因此,可以编写一个函数,它的一个参数是函数指针。然后,在(外部)函数使用其函数指针参数时,就间接地调用在调用函数时对应参数指向的函数。

由于指针在不同的情况下可以指向不同的函数,因此允许调用程序确定要从外部函数中调用哪个函数。

在用函数指针类型的参数调用函数时,参数可以只包含函数地址的相应类型的指针。还可以把函数名作为参数,显示传送函数。作为参数传送给另一个函数的函数有时称为回调函数。

示例:

#include <iostream>
using std::cout;
using std::endl;
//函数声明
double squared(double);
double cubed(double);
double sum_array(double array[],int len,double (*pfun) (double));
int main(){
	double array[]={1.5,2.5,3.5,4.5,5.5,6.5,7.5,8.5};
	int len=sizeof array/sizeof array[0];
	cout<<"Sum of squares = "<<sum_array(array,len,squared)<<endl;
	cout<<"Sum of cubes = "<<sum_array(array,len,cubed)<<endl;
	return 0;	
} 
//求平方和
double squared(double x){
	return x*x;
}
//求立方和
double cubed(double x){
	return x*x*x;
}
//对数组元素按照函数指针指定的函数处理后求和
double sum_array(double array[],int len,double (*pfun) (double)){
	double total=0.0;
	for(int i=0;i<len;i++)
		total+=pfun(array[i]);
	return total;
}


 

C++中传送函数指针,布布扣,bubuko.com

评论(0
© 2014 mamicode.com 版权所有 京ICP备13008772号-2  联系我们:gaon5@hotmail.com
迷上了代码!