基于Scott Myers advice关于非成员朋友函数优先于成员函数,在大多数情况下它们是有意义的 - 建议用于设置名称空间的约定是什么?
特别是,如何避免将所有内容嵌套到命名空间中,最终避免使用可读性较低的代码。如:
namespace Vector
{
class Vector2 {...};
bool IsUnitVector(const Vector2& vector);
}
导致如下呼叫:
Vector::Vector2 position;
if (Vector::IsUnitVector(position)) {...}
以下是否可以接受:
class Vector2 {...};
namespace Vector2
{
bool IsUnitVector(const Vector2& vector);
}
允许更具可读性的呼叫,并按逻辑分组:
Vector2 position;
if (Vector2::IsUnitVector(position) {...}
答案 0 :(得分:3)
您可以将它们分组到同一名称空间中,并依赖于依赖于参数的查找:
Vector::Vector2 position;
if (IsUnitVector(position)) {...} // Magically resolves to Vector::IsUnitVector
定义一个与类名相同的命名空间最多会让人感到困惑,并可能导致歧义错误。