【1】场景分析

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

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

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

【2】代码示例

简单示例如下:

 #include <iostream>
#include <functional> class A
{
public:
void funcOld(int x, int y)
{
// -----code section
auto s1 = x + y;
// -----code section
auto s2 = x + y;
// -----code section
auto s3 = x + y; std::cout << "sum :: " << s1 + s2 + s3 << std::endl;
} void func(int x, int y)
{
auto func1 = [this](int x, int y)
{
return x + y;
}; auto s1 = func1(x, y); auto s2 = func1(x, y); auto s3 = func1(x, y); std::cout << "sum :: " << s1 + s2 + s3 << std::endl;
}
}; void main(int argc, char *argv[])
{
for (auto c : { "hello world !!!" }) // c++17 for
{
std::cout << c;
} std::cout << std::endl;
A a;
a.func(, ); system("pause");
} // run out:
/*
hello world !!!
sum :: 15
请按任意键继续. . .
*/

Good Good Study, Day Day Up.

顺序 选择 循环 总结

C++11 Function 使用场景的更多相关文章

  1. CI Weekly #11 | 微服务场景下的自动化测试与持续部署

    又一周过去了,最近我们的工程师正在搞一个"大事情" --「[flow.ci](http://flow.ci/?utm_source=bokeyuan&utm_medium= ...

  2. Using C++11 function & bind

    The example of callback in C++11 is shown below. #include <functional> void MyFunc1(int val1, ...

  3. C++11 function

    #include <iostream> #include <functional> #include <vector> using namespace std; / ...

  4. C++11 function使用

    function是一组函数对象包装类的模板,实现了一个泛型的回调机制. 引入头文件 #include <functional>using namespace std;using names ...

  5. c++11 function bind 测试。

    实验小结 1)function 是一个模板类.有函数指针成员.可以看作安全型函数指针. template<typename _Res, typename... _ArgTypes> cla ...

  6. c++11:function的用法

    function是函数.函数对象.函数指针.和成员函数的包装器,可以容纳任何类型的函数对象,函数指针,引用函数,成员函数的指针 普通函数 #include <functional> voi ...

  7. C++ 11: function & bind 使用示例

    #include <functional> #include <iostream> struct Foo { Foo(int num) : num_(num) {} void ...

  8. C++11 function用法 可调用对象模板类

    std::function<datatype()> ()内写参数类型 datatype 代表function的返回值 灵活的用法.. 代码如下 #include <stdio.h&g ...

  9. C/C++ 随笔目录

    [1]基础部分 (1)宏定义 <assert> <offset宏> <#pragma once> <宏定义学习> <预处理语句> <# ...

随机推荐

  1. linux测试环境维护之磁盘空间维护

    常见需要定期清理的日志有: 清理oracle监听日志: 1.进入/opt/oracle/db/diag/tnslsnr/sels-186/listener/alert目录下, 执行命令: rm -rf ...

  2. InnoDB log file 设置多大合适?

    简介: 数据库的东西,往往一个参数就牵涉N多知识点.所以简单的说一下.大家都知道innodb是支持事务的存储引擎.事务的四个特性ACID即原子性(atomicity),一致性(consistency) ...

  3. 前端 HTML form表单标签 input标签 type属性 checkbox 多选框

    多选框 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8 ...

  4. 011-ThreadFactory线程工厂

    一.源码分析 ThreadFactory是一个线程工厂.用来创建线程.这里为什么要使用线程工厂呢?其实就是为了统一在创建线程时设置一些参数,如是否守护线程.线程一些特性等,如优先级.通过这个Tread ...

  5. 002-读书笔记-企业IT架构转型之道-阿里巴巴中台战略思想与架构实战-第二章 构建业务中台的基础-共享服务体系简介

    2.1.回归SOA的本质-服务重用 SOA理念的核心价值:松耦合的服务带来业务的复用,通过服务的编排助力业务的快速响应和创新. 现有模式多是烟囱式结合 ESB 企业总线打通不同系统间的交互. 2.2. ...

  6. 香港低价linux虚拟主机,

    https://www.sugarhosts.com/zh-cn/hosting/shared-web-hosting Shared Baby 36 个月 ¥ 26.99 19 99 · / 月 续费 ...

  7. 安全易用的云许可-VirboxLM许可管理平台

    Virbox LM是深思推出的基于云许可管理的开放平台,旨在为开发者提供低成本.高强度.操作便捷的一站式软件保护方案. Virbox LM包括用户许可管理工具.加壳工具.API帮助工具.开发商管理工具 ...

  8. html-标签页

    <template> <div class="pos-frame"> <div class="pos h100"> < ...

  9. 10.110.20.16上的MQTT server

    apollo 10.110.20.16    root    XnlzeNP2 /var/lib/apache-apollo-1.7.1 1  创建broker 进入 bin  创建 broker  ...

  10. linux git patch 和patch以及git diff 命令

    1.git log 查看commit id,修改前为id1,修改后id2 2.根据id1到id2有几次提交来生成几个patch,否则的话会根据所有节点生成很多patch 比如: commit id2 ...