是一个只有静态方法的类比命名空间更好吗?

时间:2013-04-19 15:57:33

标签: c++ namespaces static-members

我受this question下的评论的启发。

我没有看到为什么只有静态函数的类比名称空间(仅使用函数)更好的设计的原因。欢迎任何这两种方法的优缺点列表。一些实际的例子会很棒!

2 个答案:

答案 0 :(得分:9)

一个非风格上的区别是您可以使用类作为模板参数,但不能使用命名空间。这有时用于策略类,如std::char_traits

在该用例之外,我会坚持使用常规函数的命名空间。

答案 1 :(得分:3)

使用静态方法的类

  • 你可以在另一个类中拥有类,你不能在类中有命名空间(因为它可能没有任何意义)。
  • 他们使用非常古代编译器。

命名空间

- 您可以创建名称空间别名

namespace io = boost::iostreams; 好吧,你可以typedef课,所以这是没有实际意义的。

  • 您可以将符号导入另一个名称空间。

    namespace mystuff { using namespace boost; }

  • 您可以导入所选符号。

    using std::string;

  • 它们可以跨越多个文件(非常重要的优势)

  • 内联命名空间(C ++ 11)

底线:命名空间是C ++的最佳选择。