class compl{
float re,im;
public:
compl(float r, float i)
{re=r; im=i;}
compl& operator++()
{++re; return*this;} //(1)
compl operator++(int k){
compl z=*this; re++; im+=k; return z;} //(2)
friend compl& operator--(compl& z)
{--z.re; return z;}
friend compl operator--(compl& z,int k)
{compl x=z; z.re--; z.im-=k; return x;}
};
(1)为什么我们必须通过引用返回当前对象?据我了解,引用只是某事的第二个名字。
(2)为什么我们必须在z中保存当前对象,然后更改对象并返回未更改的z?这样做,我们将返回未增加的值。是因为后缀运算符的工作方式(它返回旧值,然后增加它)
最佳答案
(1)您不必这样做,但这是惯用法,因为它允许链接运算符或调用。
(2)是,后缀应返回先前的值。