请看下面的简单代码:
class Foo
{
public:
Foo(){}
~Foo(){}
Foo(const Foo&){}
Foo& operator=(const Foo&) { return *this; }
};
static Foo g_temp;
const Foo& GetFoo() { return g_temp; }
Run Code Online (Sandbox Code Playgroud)
我试着auto像这样使用:
auto my_foo = GetFoo();
Run Code Online (Sandbox Code Playgroud)
我希望这my_foo将是一个常量引用Foo,这是函数的返回类型.但是,类型auto是Foo,而不是参考.此外,my_foo是通过复制创建的g_temp.这种行为对我来说并不那么明显.
为了获得引用Foo,我需要这样写:
const auto& my_foo2 = GetFoo();
auto& my_foo3 = GetFoo();
Run Code Online (Sandbox Code Playgroud)
问题:为什么auto推断出GetFoo作为对象的返回类型,而不是引用?
是什么const在"顶级"预选赛中,C平均++?
还有什么其他水平?
例如:
int const *i;
int *const i;
int const *const i;
Run Code Online (Sandbox Code Playgroud)