函数类型和函数对象

在C和C++中,函数是一种类型,原因是可以指向函数的指针。这个指针指向了内存中函数的入口处。(多么有趣的现象!因为这一下子把程序和进程的概念似乎又引入进来了!)

void (*fPtr)(int );//这是一个变量的定义,指针变量

由于函数是一种类型,我也就可以使用typedef关键字:

对于函数:void function (int a);

typedf void FUNCTION (int a);//定义一种函数类型

FUNCTION *p=fPtr;//p是指向上面定义的函数类型的指针

int b=1; 

fPtr(b);//调用函数

————————————————————————————————————————————————————————————

函数对象

看下面的一段代码:

int a=b=3;

int c=sum(a,b);

这里sum可以被理解为int sum(int,int)这样的函数。

但是,这有个缺点,如果上面的代码换为:

float a=b=3.0;

float c=sum(a,b);

那么sum作为一个函数的原型,就必须实现各参数类型对应的函数重载。当然,我们还有更灵活的方法来实现:

template<class T>
class Sum{
public:    
    sum(){};
    T operator()(T a, T b){
        return a+b
        }
};
Sum<int> sum;

  函数对象不是函数,它是一个借用了操作符()重载实现类似于函数调用的功能。

转载于:https://www.cnblogs.com/wangpei0522/p/3795520.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值