2016-07-22 24 views
0

儘可能多地使用auto是否是一個好主意,因此更改代碼中的數據類型更靈活?就像如果你使用一堆基於範圍的for循環一樣,總是使用auto會很有效率,所以你永遠不必回去改變for循環的數據類型?用於靈活性的C++自動關鍵字

+3

肯定是的:https://herbsutter.com/2013/08/12/gotw-94-solution-aaa-style-almost-always-auto/ – CinCout

+1

香草說是的,我同意大多數情況下(包括基於範圍for或lambda)。不過,我並不完全相信「總是」的部分。特別是如果類型不明顯,使其明確可使代碼更易於閱讀,並且不要忘記冗餘也可以捕獲錯誤。 – MikeMB

回答

1

總之,是的。詳情請參閱AAA。但是請注意某些情況下是這樣的:

int x = 4; 
int& ref = x; 
auto y = ref; 

y現在intint&

const int x = 5; 
auto y = x; 

yintconst int;

+0

您能否提供這些案例如何產生不良結果的例子? –

+0

我只是想強調一下,你可能會認爲auto會和&或const得到正確的類型。不是這樣。因此,第一個示例將創建一個深層副本,而不僅僅是複製引用。 –

+0

@HumamHelfawi嗯,這正是我期望的行爲,看起來好像你可以寫'auto&'。 – CoffeeandCode