关于C++11的Move构造函数和栈上的局部对象
看一个测试例子:
class testMove{
public:explicit testMove(int n = 0): data{ n }{std::cout << "explicit constructor for testMove" << std::endl;}~testMove() {std::cout << "Destructor for TestMove" << std::endl;}testMove(const testMove & rhs):data{ rhs.data }{std::cout << "Invoke the copy constructor" << std::endl;}testMove(testMove && rhs):data{ rhs.data }{std::cout << "Invoke the move constructor" << std::endl;rhs.data = 0;}private:int data;
};testMove getTestMoveFromStack() {testMove test{ 10 };return test;
}int _tmain(int argc, TCHAR* argv[], TCHAR * env[])
{testMove tt = getTestMoveFromStack();return 0;
}