class A
{ …
public:
A(const A &a);
A & operate =(const A &a);
};
其实复制函数可以声明为void 的,但是考虑到人们在使用时经常有a=b=c这种连续赋值的习惯,如果声明为void ,则会出现如下尴尬情况:a=(void ),这样的话就会报错,虽然b=c赋值成功,但是a=(b=c)却无法通过,因此返回一个*this缓解尴尬。
class A
{ …
public:
A(const A &a);
A & operate =(const A &a);
};
其实复制函数可以声明为void 的,但是考虑到人们在使用时经常有a=b=c这种连续赋值的习惯,如果声明为void ,则会出现如下尴尬情况:a=(void ),这样的话就会报错,虽然b=c赋值成功,但是a=(b=c)却无法通过,因此返回一个*this缓解尴尬。