#include <iostream>
using namespace std;
class Foo
{
public:
Foo()
{
cout << "Foo()" << endl;
};
Foo(Foo&& f)
{
cout << "Foo(Foo&&)" << endl;
this->x = 1;
}
Foo(const Foo& f)
{
cout << "Foo(const Foo&)" << endl;
this->x = 2;
}
int x;
static Foo get()
{
return Foo();
}
};
int main(int argc, char* argv[])
{
Foo foo2(Foo::get());
return 0;
}
以上代码如何产生输出:
Foo()
我在期待:
Foo()
Foo(&&)
我的解释是因为编译器优化。
但这会导致不同的行为。
我使用的是Microsoft VS 2013。