我正在阅读C++ 常见问题解答。在那里,我在运算符重载使用指南中找到了一点:
如果您提供构造运算符,它们应该允许提升左侧操作数(至少在类具有未使用显式关键字标记的单参数 ctor 的情况下)。例如,如果您的 Fraction 类支持从 int 到 Fraction 的提升(通过非显式 ctor Fraction::Fraction(int)),并且如果您允许两个 Fraction 对象使用 x - y,则还应该允许 42 - y。实际上,这仅仅意味着您的 operator-() 不应该是 Fraction 的成员函数。通常,如果出于强制公开的原因,您会使其成为朋友:班级的一部分,但即使它不是朋友,也不应该成为会员。
为什么作者写了 operator-() 不应该是成员函数?
如果我将 operator-() 作为成员函数会有什么不好的后果,还有什么其他后果?