在特定命名空间中创建库时,为该命名空间中的类提供重载运算符通常很方便。看来(至少使用g ++)的重载运算符可以在图书馆的命名空间来实现:C++中的命名空间和运算符重载
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&);
从我的测试中,他们似乎都做工精细。这两个选项有什么实际区别吗?两种方法都更好吗?
使用库名称空间的另一个原因:[本文](http://stackoverflow.com/questions/5195512/namespaces-and-operator-resolution)包含一个使用全局名称空间不起作用的示例。 – Tim 2015-06-15 11:20:28