例如,在:函数括号之后的 - >符号表示什么?
virtual auto create_obj() -> std::unique_ptr<Base>
{
return std::unique_ptr<Base>{};
}
是什么 - >意味着什么? 由于返回类型被指定为auto,为什么它是必需的?
例如,在:函数括号之后的 - >符号表示什么?
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;
}
哪个更容易阅读。
P.S.尾随返回类型可用于函数指针的声明太:
auto yoyo(){ std::cout << "yoyo!\n"; }
auto yoyo_fn() -> void(*)(){ return yoyo; }
auto too_far() -> auto(*)() -> void(*)(){ return yoyo_fn; }
这是非常做作,但比我要是在传统的语法来写更容易阅读!
但是为什么使用auto呢?也可以用通常的方式指定返回类型......就好像是不必要的输入。当然,还有更多呢? –
@John在你的例子中是没有意义的,但我会在其中加入一个有用的例子。 – CoffeeandCode
@John这只是一个偏好问题。我亲自编写'auto main() - > int',因为它会让人烦恼。 –
这是否编译? – datahaki
@datahaki,当然它! (给出一个C++ 11编译器) –
那么,有时候给自动助手一个好处。 – Bathsheba