gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 16:28:45 26 4
gpt4 key购买 nike

我编写了一个返回对本地对象的引用的函数。

Fraction& operator*(Fraction& lhs, Fraction& rhs)
{
Fraction res(lhs.num*rhs.num,lhs.den*rhs.den);
return res;
}

函数返回后,res 对象将被销毁,接收对象将指向 Ex-Fraction 对象,导致使用它时出现未定义的行为。任何要使用此功能的人都会遇到问题。

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

最佳答案

大多数编译器会在您这样做时显示警告。您应该始终使用 GCC 的 -Wall 等选项打开警告。

至于为什么标准不要求报错,是因为有流控的函数会让人很难判断返回值是否引用了本地。 (只有当调用者使用返回值时才会发生未定义的行为。)

关于c++ - 返回对本地对象的引用的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17046363/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com