创建局部变量时,使用(const) auto&
或auto
是否正确?
例如:
SomeClass object;
const auto result = object.SomeMethod();
要么 const auto& result = object.SomeMethod();
SomeMethod()返回非原始值的地方-可能是另一个用户定义的类型。我的理解是const auto& result
正确的,因为SomeMethod()返回的结果将为返回的类型调用复制构造函数。如果我错了,请纠正我。
原始类型呢?我认为const auto sum = 1 + 2;
是正确的。
这是否也适用于基于范围的for循环?
for(const auto& object : objects)
auto
工作的(除了initializer_list
s的特殊情况,(在模板上下文中未推演),然后auto
键入推演。