我想为我的类(我们称之为A)实现一个Swap()方法来制作复制和交换运算符=()。据我所知,swap方法应该通过交换类的所有成员来实现,例如:
class A
{
public:
void swap(A& rhv)
{
std::swap(x, rhv.x);
std::swap(y, rhv.y);
std::swap(z, rhv.z);
}
private:
int x,y,z;
};
但是,如果我有一个 const 成员,我该怎么办?我不能为它调用std::swap,所以我不能编码A::Swap()。
编辑:其实我的课有点复杂。我想序列化和反序列化它。const 成员是该对象内不会更改的一段数据(例如其 ID)。所以我想写这样的东西:
class A
{
public:
void Serialize(FILE* file) const
{
fwrite(&read_a, 1, sizeof(read_a), file);
}
void Deserialize(FILE* file) const
{
size_t read_a;
fread(&read_a, 1, sizeof(read_a), file);
A tmp(read_a);
this->Swap(tmp);
}
private:
const size_t a;
};
并调用此代码:
A a;
FILE* f = fopen(...);
a.Deserialize(f);
我很抱歉这种含糊的措辞。