标签:
在栈空间的临时成员变量在函数生命期结束后无法传出
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
读书笔记_Effective_C++_条款二十一:当必须返回对象时,别妄想返回其reference
标签:
原文地址:http://www.cnblogs.com/vhyc/p/5592322.html