例如,在:函數括號之後的 - >符號表示什麼?
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