zoukankan      html  css  js  c++  java
  • C++11 Function 使用场景

    【1】场景分析

    在一个函数内部,可能会多次用到某一段代码,一般情况是把这段用到次数较多的代码封装成一个函数。

    但是,如果这段代码仅仅只在这个函数中有使用,这时封装成函数显得既麻烦又冗赘。

    那么,有没有办法生成一个“临时的函数”,且“临时的函数”生命周期仅在这个函数当中?C++11中可以使用function配合lambda表达式来实现。

    【2】代码示例

    简单示例如下:

     1 #include <iostream>
     2 #include <functional>
     3 
     4 class A
     5 {
     6 public:
     7     void funcOld(int x, int y)
     8     {
     9         // -----code section
    10         auto s1 = x + y;
    11         // -----code section
    12         auto s2 = x + y;
    13         // -----code section
    14         auto s3 = x + y;
    15 
    16         std::cout << "sum :: " << s1 + s2 + s3 << std::endl;
    17     }
    18 
    19     void func(int x, int y)
    20     {
    21         auto func1 = [this](int x, int y)
    22         {
    23             return x + y;
    24         };
    25 
    26         auto s1 = func1(x, y);
    27 
    28         auto s2 = func1(x, y);
    29 
    30         auto s3 = func1(x, y);
    31 
    32         std::cout << "sum :: " << s1 + s2 + s3 << std::endl;
    33     }
    34 };
    35 
    36 void main(int argc, char *argv[])
    37 {
    38     for (auto c : { "hello world !!!" }) // c++17 for
    39     {
    40         std::cout << c;
    41     }
    42 
    43     std::cout << std::endl;
    44     A a;
    45     a.func(2, 3);
    46 
    47     system("pause");
    48 }
    49 
    50 // run out:
    51 /*
    52 hello world !!!
    53 sum :: 15
    54 请按任意键继续. . .
    55 */

    Good Good Study, Day Day Up.

    顺序 选择 循环 总结

  • 相关阅读:
    Batch Normalization
    常用shell命令
    把chord下dbm_noauth做成静态库,提供接口
    vim中多标签和多窗口的使用
    recv返回值
    在XP下从硬盘安装windows 7的方法
    Linux文件系统中的链接
    统计出现次数排名
    linux编程环境
    windows命令行修改连接的DNS
  • 原文地址:https://www.cnblogs.com/Braveliu/p/9155702.html
Copyright © 2011-2022 走看看