我试图弄清楚 & 在返回类型上的目的是什么。我的意思是,考虑下面的代码,如果我从运算符重载函数中删除 & 会发生什么。
class Container
{
public:
int numElems;
int *data;
Container(int n):numElems(n){data=new int [numElems];}
Container & operator=(const Container &rhs)
{
if(this!=&rhs)
{
if(data!=NULL)
delete [] data;
numElems=rhs.numElems;
data=new int [numElems];
for (int i=0;i<numElems;i++)
{
data[i]=rhs.data[i];
}
return *this;
}
}
};
我删除它并编译它,它编译没有任何错误。实际上它在两种情况下给出了相同的结果,例如 main:
int main()
{
Container a(3);
Container b(5);
Container c(1);
cout<<a.numElems<<endl;
cout<<b.numElems<<endl;
cout<<c.numElems<<endl;
a=b=c;
cout<<a.numElems<<endl;
cout<<b.numElems<<endl;
cout<<c.numElems<<endl;
return 0;
}
那么,有没有人可以帮助我了解左侧 & 的目的?提前致谢。