戻り値の型に対する & の目的を理解しようとしました。つまり、以下のコードを考えてみてください。演算子のオーバーロード関数から & を削除するとどうなりますか。
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;
}
}
};
私はそれを削除してコンパイルしましたが、エラーなしでコンパイルされました.実際には、メインの例の両方のケースで同じ結果が得られます:
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;
}
それで、左側の & の目的について私を助けることができる人はいますか? 前もって感謝します。