const类成员的自动扣除

时间:2016-04-12 04:41:49

标签: c++ c++14 auto

以下两种实现访问私有常量类成员的实现有什么区别?

// Auto& (compile ok)
class Foo {
  private:
    const int _foo;
  public:
    Foo(const int& in) : _foo(in) {}
    auto& foo() { return _foo; }
}

// Explicit type (compiler error)
class Foo {
  private:
    const int _foo;
  public:
    Foo(const int& in) : _foo(in) {}
    int& foo() { return _foo; }
}

对于auto,编译器不会抱怨,但显式int类型声明实际上会给出编译器错误(这是由于constness)。在这种情况下,推导出auto是什么?

1 个答案:

答案 0 :(得分:4)

由于_foo的类型为const intauto指的是const int。更改您的'明确类型'返回const int&的代码,编译器不应该再抱怨了。