C++-typedef int (&rifii) (int, int)

C++-typedef int (&rifii) (int, int)

泛泛之交 发布于 2017-03-08 字数 81 浏览 1128 回复 3

typedef int (&rifii) (int, int);
这段代码是什么意思?有什么用处?

如果你对这篇文章有疑问,欢迎到本站 社区 发帖提问或使用手Q扫描下方二维码加群参与讨论,获取更多帮助。

扫码加入群聊

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

甜柠檬 2017-05-29 3 楼

函数指针的用法。
比如一个函数声明如下:

int func(int,int);

typedef int (&rifii) (int, int);
rifii = func;

那么func(1,2)和rifii(1,2)是一样的。

sorry,昨天没看清。其实是一样的,带*是函数指针;
带&是函数引用。比如:
typedef int (&rifii) (int, int);
func(1,2);

rifii fff= func;
fff(1,2);
但使用函数指针的情况比较多,引用的倒不常见吧

清晨说ぺ晚安 2017-04-17 2 楼

函数指针
具体用法 我觉得 就是用在windows api中的 钩子

很实用

想挽留 2017-03-22 1 楼

这个是函数引用的形式。
与指针的区别:在处理普通变量的时候指针没有引用容易,而在处理函数的时候引用却未必如此,所以现在函数引用使用得较少,函数指针比较普遍。

函数指针的声明使用方式:
<想要指向的函数之返回类型>(*函数指针的名称)<想要指向的函数之参数类型…>

函数引用的声明和使用方式:
<欲引用的函数之返回类型>(&函数引用的名称)<欲引用的函数之参数类型…>=<欲引用的函数的名称>
之所以如此,是引用在声明的时候必须初始化,引用不能指向空值。

如要想声明一个函数引用指向以下函数:
void func(int i)
{
...
}
那么就可以如下操作:
void (&rFunction)(int)=func;
在然后,rFunction就可以和函数func一样使用了,比如,
rFunction(1);