gpt4 book ai didi

c++ - 这个函数和 lambda 有什么区别?

转载 作者:行者123 更新时间:2023-11-28 01:50:37 25 4
gpt4 key购买 nike

#include<iostream>

using namespace std;

int* New()
{
return new int(666);
}
int Foo()
{
//method1:
int* it = New();
return *it;
//method2:
return []() { return *(new int(666)); };//Complier has a complain here
/*Both New() and Lambda are callable object, are there any differences between method1 and method2?*/
}
int main()
{
cout << Foo() << endl;
return 0;
}

我刚接触C++,遇到了上面的情况,我复习了C++ Primer的10.3.2到10.3.3章,里面介绍了lambda表达式。但是对我不起作用,我是也对我列出的最后一个注释感到困惑。

最佳答案

return []() { return *(new int(666)); };

此行试图返回 lambda 本身。您想要调用 lambda 并返回它产生的整数:

return []() { return *(new int(666)); }();  // Note the () at the end

不过,定义一个 lambda 函数只是为了立即调用它通常没有多大意义。当您需要实际返回一个函数或将一个函数作为参数时,它们更常用。 (不过,这是一项更高级的事情,所以您现在可能不应该担心它。)


单独说明:您的程序使用 new 分配整数,但它永远不会使用 delete 释放它们。这是 memory leak ,这是您应该避免的事情。

关于c++ - 这个函数和 lambda 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43163969/

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