gpt4 book ai didi

c++ - 为什么 C++ Lambda 表达式不工作

转载 作者:行者123 更新时间:2023-11-30 05:21:20 24 4
gpt4 key购买 nike

我对这个功能非常陌生,我刚刚阅读了有关 C++ 中的 Lambda 表达式并尝试在一个简单的程序中实现它。

int main()
{
std::string name;
int a = 5;
std::cout << "What is your name? ";
getline (std::cin, name);
for([&](){a = 7;};a > 0; a--)
{
std::cout << "Hello, " << name << "!\n";
}
}

但是它并没有像我想象的那样工作..我的假设:[&](){a = 7;} 这会将变量 a 的值从 5 更改为 7 但它不会......代码有什么问题吗??或者只是我的假设不正确?

最佳答案

只要您调用,您的假设就是正确的。

[&]: implicitly capture by reference. All local names can be used. All local variables are accessed by reference.

您可以访问局部变量,但不会调用 lambda 本身。这就是您的代码中发生的事情:

没有捕获的 Lambda 表达式 -> functionPtr -> bool(对于非 null functionPtr 为真)

其中->是隐式转换

而是执行 (lambdaExpression)()lambdaExpression() 来调用它。

关于c++ - 为什么 C++ Lambda 表达式不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40199318/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com