[英]auto return types in C++ function vs specifying return type
在我工作的代碼庫中,我看到以下內容
class custom {
auto set_data_type(custom_type_t type_t) -> custom & {
// set some stuff
// return *this;
}
}
為什么我們不能簡單地做
class custom {
custom & set_data_type(custom_type_t type_t) {
// set some stuff
// return *this;
}
}
當您已經知道返回類型並且已經將其寫在->...
位置時,在這種情況下使用auto
有什么意義?
似乎auto
僅在與decltype(arg)
一起使用並且arg
可能具有不同的返回類型時才有用?
我會說風格。
此外,它允許在任何情況下保持一致,
decltype(arg)
,范圍(-> iterator
而不是類型名typename C::iterator
)對我來說,此功能的最大用途是在 cpp 文件中定義 function 主體時使用嵌套類型:
class MyLongClassName
{
using ANestedType = ...;
ANestedType myFunction();
}
當您實現 function 主體時,此語法避免了一些重復:
MyLongClassName::ANestedType MyLongClassName::myFunction()
{ ... }
相對
auto MyLongClassName::myFunction() -> ANestedType
{ ... }
我相信,根本不應該使用“自動”。 恕我直言,這是 void* 的丑陋兄弟姐妹; 它對程序員隱藏了類型,而最好確切地知道使用的是什么類型; 這會使一個人的編程風格變得笨拙、混亂並引發錯誤。 雖然唯一“合理”的用法是 typename “縮短”,但它實際上是荒謬的,因為短類型名稱不需要替換,而長名稱還有另一個關鍵字。 恕我直言。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.