本文主要是介绍【C++ 11 新特性】lambda 表达式详解,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
文章目录
- 1. 常见 lambda 面试题🖊
1. 常见 lambda 面试题🖊
- 🍎① 如果⼀个
lambda
表达式作为参数传递给⼀个函数,那这个函数可以使⽤这个lambda
表达式捕获的变量吗 ?
🐧 函数本身无法直接访问到
lambda
表达式捕获的变量,获的变量仅对lambda
表达式及其生成的闭包对象内部可见。
// 通过模板传递lambda表达式
// executeLambda 是一个模板函数,可以接受任何可调用对象。#include <iostream>void executeLambda(const std::function<void()>& func) {// 这里无法直接访问捕获的变量func();
}int main() {int x = 10;auto lambda = [x]() { std::cout << "Captured value: " << x << std::endl; };executeLambda(lambda);// 这里也无法直接访问捕获的变量return 0;
}
- 🍎②
lambda
表达式、std::function
、函数指针这三者有什么区别?
都是 用来表示和处理函数对象或可调用对象的不同方式。它们各自有不同的特点和使用场景。
下面是它们之间的区别:
这篇关于【C++ 11 新特性】lambda 表达式详解的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!