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

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

  • 相关阅读:
    BigDecimal的一些用法
    java文件读写实例
    2017java文本文件操作(读写操作)
    java一些必会算法
    代码规范、如何写出好代码
    File available()方法
    Java当中的JVM
    分布式锁机制
    异常处理---抛与踹
    while eles
  • 原文地址:https://www.cnblogs.com/suanguade/p/14102722.html
Copyright © 2011-2022 走看看