2

谁能帮我理解下面的代码

#include <iostream>
using namespace std;

int main()
{
    auto hello = []() -> void {
        cout << "Hello World";
    };

    // Call the lambda function
    hello();
}

这里有什么用auto hello = []() -> void?我不明白花括号后终止分号的含义(第 7 行)

4

1 回答 1

7

像一行一样阅读:

auto hello = []() -> void { cout << "Hello World"; };

hello是一个包含 lambda 的变量

  • 不捕获外部变量 ( []),
  • 不带参数 ( ()),
  • voidreturn ( ,这称为“尾随返回-> void类型”,指定 lambda 的返回类型,就像您对普通函数一样。这实际上在这里是不必要的。),和
  • 由其主体中的单个cout语句组成。

它直到下一行被显式调用时才真正执行。

于 2013-03-09T17:26:07.827 回答