文章目录
- 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
、函数指针这三者有什么区别?
都是 用来表示和处理函数对象或可调用对象的不同方式。它们各自有不同的特点和使用场景。
下面是它们之间的区别: