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

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

  • 相关阅读:
    tcp/ip协议
    linux系统优化项
    MySQL索引
    mysql命令中的group by 和 order by li'mit使用与技巧
    mysql命令
    WPF学习笔记01_XAML之简介
    【高精度】大整数的因子
    【高精度】计算2的N次方
    【高精度】大整数减法
    【高精度】大整数加法
  • 原文地址:https://www.cnblogs.com/suanguade/p/14102722.html
Copyright © 2011-2022 走看看