想当年,C++没有支持匿名函数的时候,如何使用“匿名函数”

 

方法有几种,这里一一列举

1:直接用结构体重载小括号

复制代码
 1 struct UnnamedFunction
 2 {
 3     int operator()(int a, int b)
 4     {
 5         return a + b;
 6     }
 7 };
 8 
 9 int main()
10 {
11     printf("%d \n", UnnamedFunction()(5, 7));
12     return 0;
13 }
复制代码

 

2:局部变量匿名结构体对象重载小括号

复制代码
 1 int main()
 2 {
 3     struct 
 4     {
 5         int operator()(int a, int b)
 6         {
 7             return a + b;
 8         }
 9     } unnamed;
10 
11     printf("%d \n", unnamed(5, 7));
12     return 0;
13 }
复制代码

 

3:结构体构造后成员返回

复制代码
 1 struct UnnamedFunction
 2 {
 3     UnnamedFunction(int a, int b)
 4     {
 5         ret = a + b;
 6     }
 7     int ret;
 8 };
 9 
10 int main()
11 {
12     printf("%d \n", UnnamedFunction(5, 7).ret);
13     return 0;
14 }
复制代码

 

通过方法三,其实可以引申出很多方法,

比如局部匿名结构体返值返回,

甚至模板结构体值返回,

而,其实,最常用的方法还是第二种方法,

因为第二种方法,比较符合我们对匿名函数的处理,

就算C++11 出了之后,匿名函数的使用依旧需要一个 auto 来引,

定义时调用的这种情况,确实模拟不出来,这是硬伤。

 

posted @   穷到底  阅读(233)  评论(0编辑  收藏  举报
编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· DeepSeek 开源周回顾「GitHub 热点速览」
点击右上角即可分享
微信分享提示