【发布时间】:2015-10-19 01:40:42
【问题描述】:
假设我有以下课程:
namespace Example
{
class Bar {};
}
现在,如果我想重载 Bar 类的运算符,我应该这样做:
namespace Example
{
class Bar {};
ostream& operator<<(ostream& os, const Bar& b)
{/*..........*/}
}
或者我应该这样做:
namespace Example
{
class Bar {};
}
ostream& operator<<(ostream& os, const Example::Bar& b)
{/*..........*/}
如果我应该做上述任何一个,请张贴解释为什么应该这样做。
附: /*.....*/ 仅表示函数的主体(为简单起见,省略)
【问题讨论】:
-
@Petr IMO,没有我的不是重复的。在您提供的链接中,它告诉我在命名空间中执行此操作,因为编译器会找到它。但是,我要问的是哪个更好,为什么?谢谢你的链接
-
@J.Alvaro.T,它还说“无需污染全局命名空间”。那里的其他答案也说同样的话(“……不要弄乱全局命名空间。”)
-
@Petr 感谢您指出这一点。大概是错过了。有时我只是浏览了一个问题而错过了重要的部分。
标签: c++ namespaces operator-overloading