在特定命名空间中编写库时,为该命名空间中的类提供重载运算符通常很方便。似乎(至少在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&);
通过我的测试,这两种方法看起来都可以很好地工作。这两个选项之间是否存在实际差异?哪种方法更好?