【发布时间】:2013-05-06 19:01:06
【问题描述】:
我试图弄清楚 & 在返回类型上的目的是什么。我的意思是,考虑下面的代码,如果我从运算符重载函数中删除 & 会发生什么。
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;
}
那么,有没有人可以帮助我了解左侧 & 的用途?提前致谢。
【问题讨论】:
-
&与=运算符重载中奇怪而肮脏的数组操作无关。&只需要通过引用返回*this,即不复制它。
标签: c++ reference operator-overloading