我需要爲具有許多成員的類實現賦值運算符,而這些成員不是我手動賦值的。我可以先製作一個淺存儲器副本,然後執行必要的初始化?在賦值運算符內部製作淺拷貝
class C
{
public:
C &operator=(const C &rhs)
{
if (&rhs == this)
return *this;
memcpy(this, &rhs, sizeof(C));
Init(rhs);
return *this;
}
.........
};
謝謝。
我不知道,但你必須先檢查自賦值。例如如果(this ==&rhs)返回* this; – mcnicholls 2012-02-06 17:05:25
@mcnicholls:那麼,實現'='的理想方法是** Copy和Swap Idiom **。 – 2012-02-06 17:06:06
@Als:是的,我記得看過這種方法,看起來確實是最好的方法。 – mcnicholls 2012-02-06 17:16:06