关于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;
}