遇到一道C++难题求助

void Print(int Fun(int)) { std::cout << Fun; }
为什么这里面函数指针int (*Fun)(int)可以写成int Fun(int)?最好能告诉我一下在标准的什么地方。#C/C++#
全部评论
因为因为历史原因下面这三个函数是一样的: int Print1(int (*Fun)(int)){     cout << Fun(0); } int Print2(int (Fun)(int)){     cout << Fun(0); } int Print3(int Fun(int)){     cout << Fun(0); }
点赞 回复 分享
发布于 2020-08-07 18:40
函数,指代的就是一段指令。如果不使用指针,感觉好像要把函数拷贝一份,但是函数是不能拷贝的,函数编译完了之后就放在代码段。所以,就算不加 `*` 函数也应该是向指针一样的东西。加不加指针符号,编译器都把它当作函数来看。
点赞 回复 分享
发布于 2020-08-07 18:45
有点类似数组名作参数退化为指针
点赞 回复 分享
发布于 2020-08-07 19:00
我找到了《Working Draft, Standard for Programming Language C++》N3337里面5.2.2函数调用的第七条。翻译过来就是在函数形参列表中,若形参类型是函数类型 F,则它被替换成类型“F 的指针”。
点赞 回复 分享
发布于 2020-08-07 19:28

相关推荐

过往烟沉:我说什么来着,java就业面就是广!
点赞 评论 收藏
分享
1 收藏 评论
分享
牛客网
牛客企业服务