c – 返回对本地对象引用的函数

c – 返回对本地对象引用的函数,第1张

概述我已经编写了一个返回对本地对象引用函数. Fraction& operator*(Fraction& lhs, Fraction& rhs){ Fraction res(lhs.num*rhs.num,lhs.den*rhs.den); return res;} 在函数返回后,res对象将被销毁,并且接收对象将指向Ex-Fraction对象,导致使用它时的未定义行为. 任何要 我已经编写了一个返回对本地对象引用的函数.
Fraction& operator*(Fraction& lhs,Fraction& rhs){    Fraction res(lhs.num*rhs.num,lhs.den*rhs.den);    return res;}

在函数返回后,res对象将被销毁,并且接收对象将指向Ex-Fraction对象,导致使用它时的未定义行为.
任何要使用此功能的人都将面临问题.

为什么编译器无法将这种情况检测为编译时错误?

解决方法 大多数编译器会在你这样做时发出警告.您应该始终使用诸如GCC -Wall之类的选项来发出警告.

至于为什么标准不要求错误,这是因为具有流量控制的功能将使得难以判断返回值是否引用本地或不是本地的. (仅当调用者使用返回值时,才会发生未定义的行为.)

总结

以上是内存溢出为你收集整理的c – 返回对本地对象引用的函数全部内容,希望文章能够帮你解决c – 返回对本地对象引用的函数所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1235677.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-06
下一篇 2022-06-06

发表评论

登录后才能评论

评论列表(0条)

保存