在工作的过程中,lamda表达式的
重点:
1.function对象存储函数指针。
2.lamada表达式&和=捕捉的方式
lamda传入引用&,导致作用域消失,最终报错
std::function<void()> pFun;
void GetNum1(const std::function<void()>& fun)
{
pFun = fun;
}
void fun()
{
if (pFun)
{
pFun();
}
}
void GetNum(const std::function<void(int)> fun1)
{
//传入&
auto Data = [&]() {fun1(10); };
GetNum1(Data);
}
void Get(int num)
{
std::cout << num << std::endl;
}
int main() {
GetNum(Get);
fun();
return 0;
}
lamda传入赋值=,正确反馈
std::function<void()> pFun;
void GetNum1(const std::function<void()>& fun)
{
pFun = fun;
}
void fun()
{
if (pFun)
{
pFun();
}
}
void GetNum(const std::function<void(int)> fun1)
{
//传入&
auto Data = [=]() {fun1(10); };
GetNum1(Data);
}
void Get(int num)
{
std::cout << num << std::endl;
}
int main() {
GetNum(Get);
fun();
return 0;
}