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

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

  • 相关阅读:
    XML  XmlDocument
    程序集报错
    程序打开网页
    写入文件txt
    读取文件txt
    MSM8953中Android系统添加启动脚本.rc文件
    SELinux基础知识
    嵌入式Linux设备查看USB相关信息
    Linux内核态文件读写相关函数API
    C语言中sscanf()函数相关用法
  • 原文地址:https://www.cnblogs.com/suanguade/p/14102722.html
Copyright © 2011-2022 走看看