函数括号后面的 -> 表示法表示什么?

What does the -> notation after the function parenthesis signify?

本文关键字:表示 gt 什么 函数      更新时间:2023-10-16

例如,in:

  virtual auto create_obj() -> std::unique_ptr<Base>
  {
    return std::unique_ptr<Base>{};
  }

->表示什么?既然返回类型被指定为auto,为什么还需要它呢?

它被称为尾随返回类型,它只是指定函数返回类型的另一种方式。

从函数返回函数指针是很有用的一种情况。以下是"标准"语法:

void yoyo(){
    std::cout << "yoyo!n";
}
void(*my_fn())(){
    return yoyo;
}

与更"现代"的语法相比:

auto my_fn() -> void(*)(){
    return yoyo;
}

这样更容易读。

注:后面的返回类型也可以用于函数指针声明:

auto yoyo(){ std::cout << "yoyo!n"; }
auto yoyo_fn() -> void(*)(){ return yoyo; }
auto too_far() -> auto(*)() -> void(*)(){ return yoyo_fn; }

这是相当做作的,但比我必须用传统语法编写要容易得多!