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 来引,

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

  • 相关阅读:
    git 学习
    C语言 do while 语句
    C语言 计算班级平均成绩以及不及格的人数
    C语言 加减算法
    C语言 两个日期间的天数计算
    C语言 梯形面积
    C语言 while语句
    C语言 分段函数if else语句
    C语言 乘法运算
    C语言学习,for循环
  • 原文地址:https://www.cnblogs.com/suanguade/p/14102722.html
Copyright © 2011-2022 走看看