C++11 Function 使用场景
【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 使用场景的更多相关文章
- CI Weekly #11 | 微服务场景下的自动化测试与持续部署
又一周过去了,最近我们的工程师正在搞一个"大事情" --「[flow.ci](http://flow.ci/?utm_source=bokeyuan&utm_medium= ...
- Using C++11 function & bind
The example of callback in C++11 is shown below. #include <functional> void MyFunc1(int val1, ...
- C++11 function
#include <iostream> #include <functional> #include <vector> using namespace std; / ...
- C++11 function使用
function是一组函数对象包装类的模板,实现了一个泛型的回调机制. 引入头文件 #include <functional>using namespace std;using names ...
- c++11 function bind 测试。
实验小结 1)function 是一个模板类.有函数指针成员.可以看作安全型函数指针. template<typename _Res, typename... _ArgTypes> cla ...
- c++11:function的用法
function是函数.函数对象.函数指针.和成员函数的包装器,可以容纳任何类型的函数对象,函数指针,引用函数,成员函数的指针 普通函数 #include <functional> voi ...
- C++ 11: function & bind 使用示例
#include <functional> #include <iostream> struct Foo { Foo(int num) : num_(num) {} void ...
- C++11 function用法 可调用对象模板类
std::function<datatype()> ()内写参数类型 datatype 代表function的返回值 灵活的用法.. 代码如下 #include <stdio.h&g ...
- C/C++ 随笔目录
[1]基础部分 (1)宏定义 <assert> <offset宏> <#pragma once> <宏定义学习> <预处理语句> <# ...
随机推荐
- linux测试环境维护之磁盘空间维护
常见需要定期清理的日志有: 清理oracle监听日志: 1.进入/opt/oracle/db/diag/tnslsnr/sels-186/listener/alert目录下, 执行命令: rm -rf ...
- InnoDB log file 设置多大合适?
简介: 数据库的东西,往往一个参数就牵涉N多知识点.所以简单的说一下.大家都知道innodb是支持事务的存储引擎.事务的四个特性ACID即原子性(atomicity),一致性(consistency) ...
- 前端 HTML form表单标签 input标签 type属性 checkbox 多选框
多选框 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8 ...
- 011-ThreadFactory线程工厂
一.源码分析 ThreadFactory是一个线程工厂.用来创建线程.这里为什么要使用线程工厂呢?其实就是为了统一在创建线程时设置一些参数,如是否守护线程.线程一些特性等,如优先级.通过这个Tread ...
- 002-读书笔记-企业IT架构转型之道-阿里巴巴中台战略思想与架构实战-第二章 构建业务中台的基础-共享服务体系简介
2.1.回归SOA的本质-服务重用 SOA理念的核心价值:松耦合的服务带来业务的复用,通过服务的编排助力业务的快速响应和创新. 现有模式多是烟囱式结合 ESB 企业总线打通不同系统间的交互. 2.2. ...
- 香港低价linux虚拟主机,
https://www.sugarhosts.com/zh-cn/hosting/shared-web-hosting Shared Baby 36 个月 ¥ 26.99 19 99 · / 月 续费 ...
- 安全易用的云许可-VirboxLM许可管理平台
Virbox LM是深思推出的基于云许可管理的开放平台,旨在为开发者提供低成本.高强度.操作便捷的一站式软件保护方案. Virbox LM包括用户许可管理工具.加壳工具.API帮助工具.开发商管理工具 ...
- html-标签页
<template> <div class="pos-frame"> <div class="pos h100"> < ...
- 10.110.20.16上的MQTT server
apollo 10.110.20.16 root XnlzeNP2 /var/lib/apache-apollo-1.7.1 1 创建broker 进入 bin 创建 broker ...
- linux git patch 和patch以及git diff 命令
1.git log 查看commit id,修改前为id1,修改后id2 2.根据id1到id2有几次提交来生成几个patch,否则的话会根据所有节点生成很多patch 比如: commit id2 ...