首页 > 编程语言 > 详细

c++11 lambda(匿名函数)

时间:2014-07-31 23:49:50      阅读:419      评论:0      收藏:0      [点我收藏+]
#include <iostream>
#include <functional>
using namespace std::placeholders;
//lambda即匿名函数
int main()
{
    int a = 10;
    //当return所有的返回都是一个类型就不需要指定返回值的类型,因为编译器会自动推断
    //也可以指定返回值类型形式:[]()->int{return 1};
    //格式:[captures] (params) -> ret {Statments;}  
    auto func = [](){
        std::cout << "hheh" << std::endl;
    };

    //lambda中变量截取
    /*    [] 不截取任何变量
        [&} 截取外部作用域中所有变量,并作为引用在函数体中使用
        [=] 截取外部作用域中所有变量,并拷贝一份在函数体中使用
        [=, &foo]   截取外部作用域中所有变量,并拷贝一份在函数体中使用,但是对foo变量使用引用
        [bar]   截取bar变量并且拷贝一份在函数体重使用,同时不截取其他变量
        [this]            截取当前类中的this指针。如果已经使用了&或者=就默认添加此选项。*/
    
    //所有要在lambda中使用a需要
    auto func1 = [=](){
        std::cout << "hheh" << std::endl;
        std::cout << a << std::endl;
    };
    func1();
    getchar();
    return 0;
}

 

c++11 lambda(匿名函数),布布扣,bubuko.com

c++11 lambda(匿名函数)

原文:http://www.cnblogs.com/zzyoucan/p/3883734.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!