2016-07-22 37 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