相关疑难解决方法(0)

'auto'和显式变量声明表现不同

我有这样的事情:

class Bar;

class Foo()
{
 public:
   Foo() : bar(new Bar());
   Bar& GetBar() { return *bar.get(); }
 private:
   std::unique_ptr<Bar> bar;
};

void main()
{
   Foo foo;
   auto bar1 = foo.GetBar();
   auto bar2 = foo.GetBar(); //address of bar2 != address of bar1. why?

   Bar& bar3 = foo.GetBar();
   Bar& bar4 = foo.GetBar(); //address of bar3 == address of bar4.
}
Run Code Online (Sandbox Code Playgroud)

似乎'auto'变量是副本,因为我没有使用相同的内存地址返回Bars.如果我明确地将变量定义为Bar引用(Bar&),那么一切都按照我的预期运行.

我应该提到我正在编译vs2012.这里发生了什么?

谢谢.

c++ c++11

11
推荐指数
2
解决办法
1148
查看次数

标签 统计

c++ ×1

c++11 ×1