class A
{
public:
A();
~A();
A& operator= (const A& other)
{
if(this == &other)
return *this;
b = other.b;
strcpy(c, other.c);
return *this;
}
int b;
char *c;
};
下面一步步解釋:
爲什麼other是引用傳值不是複製傳值,而且要加上const?因爲other是一個類,所以就有可能有指針成員
如c,那麼,如果是複製傳遞,other中c只是實際的地址的複製,而當前是在另一個棧中,所以c中記錄的地址並不是
真正的地址!
爲什麼返回值是引用呢?可以這樣理解,我們通過默認構造函數定義了一個A的成員a,這個成員沒有值,這個時候,
我想把其它的成員b給a,這個時候如何做?其實這個時候是把b成員的值給a,
b = other.b;
strcpy(c, other.c);
return *this;
這幾句中,在return *this;之前a什麼都沒有得到,因爲這時候的this和a沒有關係,這時候的this更像一個臨時的
A的對象,直到return *this;才把this給a,這也是爲什麼用引用,因爲引用才能保證,this和a是一個事物