我是靠谱客的博主 专一哈密瓜,最近开发中收集的这篇文章主要介绍cpp 内嵌函数(lambda,struct),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

auto testFun = [this](int t)->void{

}

[]()->反回值{

}

[]内传入函数运行环境所用变量

()内传入变量

 

捕捉块

lambda表达式的方括号部分称为lambda捕捉块(capture block),在这里可以指定如何从所在作用域中捕捉变量。

捕捉变量的意思是可以在lambda表达式主体中使用这个变量。有两种方式:

[=]:通过值捕捉所有变量

[&]:通过引用捕捉所有变量

指定空白的捕捉块[]表示不从所在作用域中捕捉变量。还可以酌情决定捕捉那些变量以及这些变量的捕捉方法,方法是指定一个捕捉列表,其中带有可选的 默认捕捉选项。前缀为&的变量通过引用捕捉。不带前缀的变量通过值捕捉。默认捕捉应该是捕捉列表中的第一个元素,可以是=或&。

例如:

[&x]只通过引用捕捉x,不捕捉其他变量。

[x]只通过值捕捉x,不捕捉其他变量。

[=, &x, &y]默认通过值捕捉,变量x和y例外,这两个变量通过引用捕捉。

[&, x]默认通过引用捕捉,变量x例外,这个变量通过引用捕捉。

[&x, &y]非法,因为标志符不允许重复。

通过引用捕捉变量的时候,一定保证党lambda表达式在执行的时候,这个引用还是可用的。

 

----------------------------------------

cpp内嵌函数

void Class1::C1Fun1(){
struct Local
{
static void Fun1(){}
void Fun2(){}
}
Local::Fun1();
Local l;
l.Fun2();
}

 

转载于:https://www.cnblogs.com/mattins/p/5549520.html

最后

以上就是专一哈密瓜为你收集整理的cpp 内嵌函数(lambda,struct)的全部内容,希望文章能够帮你解决cpp 内嵌函数(lambda,struct)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(32)

评论列表共有 0 条评论

立即
投稿
返回
顶部