相关疑难解决方法(0)

C++ 11 auto:如果得到一个常量引用怎么办?

请看下面的简单代码:

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,这是函数的返回类型.但是,类型autoFoo,而不是参考.此外,my_foo是通过复制创建的g_temp.这种行为对我来说并不那么明显.

为了获得引用Foo,我需要这样写:

const auto& my_foo2 = GetFoo();
      auto& my_foo3 = GetFoo();
Run Code Online (Sandbox Code Playgroud)

问题:为什么auto推断出GetFoo作为对象的返回类型,而不是引用?

c++ reference auto c++11

71
推荐指数
1
解决办法
3万
查看次数

什么是顶级const限定符?

是什么const在"顶级"预选赛中,C平均++?

还有什么其他水平?

例如:

int const *i;
int *const i;
int const *const i;
Run Code Online (Sandbox Code Playgroud)

c++ const

46
推荐指数
4
解决办法
9028
查看次数

标签 统计

c++ ×2

auto ×1

c++11 ×1

const ×1

reference ×1