function函数指针和lamada的[&]和[=]注意事项

在工作的过程中,lamda表达式的

重点:

1.function对象存储函数指针。

2.lamada表达式&和=捕捉的方式

lamda传入引用&,导致作用域消失,最终报错

std::function pFun;
void GetNum1(const std::function& fun)
{
	pFun = fun;
}

void fun()
{
	if (pFun)
	{
		pFun();
	}
}

void GetNum(const std::function 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 pFun;
void GetNum1(const std::function& fun)
{
	pFun = fun;
}

void fun()
{
	if (pFun)
	{
		pFun();
	}
}

void GetNum(const std::function fun1)
{
	//传入&
	auto Data = [=]() {fun1(10); };
	GetNum1(Data);
}

void Get(int num)
{
	std::cout << num << std::endl;
}

int main() {
	GetNum(Get);
	fun();
	return 0;
}

function函数指针和lamada的[&]和[=]注意事项_第1张图片

你可能感兴趣的:(C++经验,c++)