读书笔记_Effective_C++_条款二十一:当必须返回对象时,别妄想返回其reference
在栈空间的临时成员变量在函数生命期结束后无法传出
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
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步