众所周知,由于作用域,从 C++ 中的函数返回局部变量是不安全的。在 Effective C++ 第三版中,Scott Meyers 在第 101 页的第 21 项中讲述了这个问题。然而,他总结说,正确的决定是这样写:
inline const Rational operator*(const Rational& lhs, const Rational& rhs) {
return Rational(lhs.n * rhs.h, lhs.d * rhs.d);
}
这不也是一种不好的做法,而且这个功能是不安全的吗?
UPD:谢谢大家的解释。