最佳答案
请看下面的简单代码:
class Foo
{
public:
Foo(){}
~Foo(){}
Foo(const Foo&){}
Foo& operator=(const Foo&) { return *this; }
};
static Foo g_temp;
const Foo& GetFoo() { return g_temp; }
我试着这样使用 auto
:
auto my_foo = GetFoo();
我希望 my_foo
是对 Foo
的常量引用,Foo
是函数的返回类型。但是,auto
的类型是 Foo
,而不是引用。此外,my_foo
是通过复制 g_temp
创建的。这种行为对我来说没那么明显。
为了获得对 Foo
的参考,我需要这样写:
const auto& my_foo2 = GetFoo();
auto& my_foo3 = GetFoo();
问题 : 为什么 auto
推断 GetFoo
的返回类型是一个对象,而不是一个引用?