【发布时间】:2017-08-03 10:07:53
【问题描述】:
当使用返回引用的函数初始化“自动”var 时,为什么 var 类型不是引用? 例如在下面的例子中,为什么 x 的类型是 Foo 而不是 Foo& ?
class TestClass {
public:
Foo& GetFoo() { return mFoo; }
private:
Foo mFoo;
};
int main()
{
TestClass testClass;
auto x = testClass.GetFoo(); // Why type of x is 'Foo' and not 'Foo&' ?
return 0;
}
编辑:该链接说明了如何获取参考,但我的问题是这种行为的原因。
【问题讨论】:
-
auto的类型推断就是这样工作的。引用和 cv 限定符被丢弃。 -
@EdgarRokyan 是正确的。您可以使用转发占位符,例如:
auto&& -
我们想要值语义而不指定和重复长类型名称。这就是埃德加刚才所说的。
-
嗯,没有参考会比较困难。