【发布时间】:2019-11-07 03:22:41
【问题描述】:
假设我有一个类MyClass,它有一个正确的移动构造函数,并且它的复制构造函数被删除了。现在我像这样返回这个类:
MyClass func()
{
return MyClass();
}
在这种情况下,移动构造函数在返回类对象时被调用,一切都按预期工作。
现在假设MyClass 实现了<< 运算符:
MyClass& operator<<(MyClass& target, const int& source)
{
target.add(source);
return target;
}
当我更改上面的代码时:
MyClass func()
{
return MyClass() << 5;
}
我收到编译器错误,因为复制构造函数已被删除,所以无法访问它。但是在这种情况下,为什么要使用复制构造函数呢?
【问题讨论】:
标签: c++ c++11 return copy move