根据我的理解,下面的代码应该调用Test
类的移动构造函数,因为这个函数是按值返回的,这意味着表达式GetTestObj()
应该是右值并且xvalues被隐式移动但是为什么这段代码调用复制构造函数?
class Test
{
public:
Test()
{
}
Test(const Test& arg)
{
std::cout<<"Copy Constructor Called..."<<std::endl;
}
Test(Test&& arg)
{
std::cout<<"Move Constructor Called..."<<std::endl;
}
};
Test GetMyTestObj()
{
Test *ptr = new Test();
return *ptr;
}
Test dummy = GetMyTestObj(); //Copy Constructor Called...