就目前而言,我有一个具有以下结构的类:
struct FooClass {
FooClass();
FooClass(int CustomIndex);
FooClass(const FooClass& CopyConstructor);
FooClass(FooClass&& MoveConstructor);
FooClass& operator=(const FooClass& CopyAssignment);
FooClass& operator=(FooClass&& MoveAssignment);
};
我有什么方法可以组合复制/移动运算符,从而不必首先提供它们,而将调用复制/移动构造函数?
如果不是,我是否至少可以从复制/移动运算符调用复制/移动构造函数?
本质上,我想要:
FooClass(const FooClass& CopyConstructor)
等于FooClass& operator=(const FooClass& CopyAssignment)
和
FooClass(FooClass&& MoveConstructor)
等于FooClass& operator=(FooClass&& MoveAssignment)
最佳答案
你的意思是像
FooClass& operator=(FooClass rhs)
{
swap(rhs);
return *this;
}
在哪里
rhs
用copy-或move-constructor构造? (鉴于您提供了swap
,这通常是个好主意)更新问题后,也许这对您有用:
FooClass(const FooClass& CopyConstructor)
{
*this = CopyConstructor;
}
FooClass(FooClass&& MoveConstructor)
{
*this = std::move(MoveConstructor);
}
关于c++ - C++-组合复制/move 运算符和构造函数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19195829/