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

前端之家收集整理的这篇文章主要介绍了c – 返回对本地对象引用的函数前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我已经编写了一个返回对本地对象引用的函数.
Fraction& operator*(Fraction& lhs,Fraction& rhs)
{
    Fraction res(lhs.num*rhs.num,lhs.den*rhs.den);
    return res;
}

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

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

解决方法

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

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

原文链接:https://www.f2er.com/c/115217.html

猜你在找的C&C++相关文章