在特定命名空间中编写库时,为该命名空间中的类提供重载运算符通常很方便。似乎(至少在 g++ 中)重载的运算符可以在库的命名空间中实现:
namespace Lib {
class A {
};
A operator+(const A&, const A&);
} // namespace Lib
或全局命名空间
namespace Lib {
class A {
};
} // namespace Lib
Lib::A operator+(const Lib::A&, const Lib::A&);
根据我的测试,它们似乎都运行良好。这两个选项之间有什么实际区别吗?哪种方法更好?