【发布时间】:2012-02-28 03:44:30
【问题描述】:
我需要为一个有很多我不想手动分配的成员的类实现一个赋值运算符。我可以先做一个浅内存拷贝,然后再进行必要的初始化吗?
class C
{
public:
C &operator=(const C &rhs)
{
if (&rhs == this)
return *this;
memcpy(this, &rhs, sizeof(C));
Init(rhs);
return *this;
}
.........
};
谢谢。
【问题讨论】:
-
我不确定,但您必须先检查自分配。例如if(this == &rhs) return *this;
-
@mcnicholls:嗯,实现
=的理想方法是复制和交换成语。 -
@Als:是的,我确实记得看到过这种方法,它看起来确实是最好的方法。
标签: c++ operator-overloading copy-constructor deep-copy