在栈空间的临时成员变量在函数生命期结束后无法传出
friend A& operator*(const A& a, const A& b) { A temp; temp.data = a.data*b.data;//a,b的成员变量相乘 return temp; }
既然栈空间不行,试试堆空间
friend A& operator*(const A& a, const A& b) { A *temp=new A; temp.data = a.data*b.data;//a,b的成员变量相乘 return *temp; }
并不可以,因为你可能会忘记自己new的,即使你没有忘记,但出现((a*b)*c)的情况会使你无法delete
A& operator*(const A& a, const A& b) { static A temp = new A; temp.data = a.data*b.data;//a,b的成员变量相乘 return temp; }
试图以全局变量求得永生,但出现if((a*b)==(c*d))会恒成立
没有办法的时候,pass-by-reference虽好,请别上头,就这回我们老老实实用pass-by-value