zoukankan      html  css  js  c++  java
  • 想当年,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 
    ", 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 
    ", 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 
    ", UnnamedFunction(5, 7).ret);
    13     return 0;
    14 }

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

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

    甚至模板结构体值返回,

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

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

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

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

  • 相关阅读:
    python
    weui 问题
    Mac 问题
    ORM存储过程和实体类代码生成工具
    说说QQ空间SEO
    用户体验走嘴和走心的区别
    一切不以用户为中心的O2O 都是耍流氓
    10分钟制作自己的手机QQ
    一无所有其实没什么
    别人的鞋不一定合脚
  • 原文地址:https://www.cnblogs.com/suanguade/p/14102722.html
Copyright © 2011-2022 走看看