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是一个事物