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? 这样做是因为后缀运算符的工作方式吗(它返回旧值,然后增加它)?
friend
函数?它们完全可以作为成员函数。 - vsoftcofriend
。它们与您的对象紧密相关,因此它们应该是成员函数。通常,您会将某些解耦函数设置为friend
,以便可以访问您的私有/受保护成员,例如operator<<
。 - vsoftco