是最好的命名空间只有静态方法的类?(Is a class with only static meth

2019-08-31 14:37发布

我被下的评论启发了这个问题 。

我看不出有任何理由,只有静态函数会比一个命名空间更好的设计(只有函数)。 优点和这两种方法的利弊的任何名单都欢迎。 这将是伟大的一些实际的例子!

Answer 1:

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

该用例之外,我会坚持定期功能的命名空间。



Answer 2:

静态方法的类

  • 你可以有类在另一个类中,你不能有内部类的命名空间(因为它可能没有任何意义)。
  • 他们有非常古老的编译工作。

命名空间

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

namespace io = boost::iostreams; 嗯,你可以typedef类,所以这是争论的焦点。

  • 你可以导入符号到另一个名称空间。

    namespace mystuff { using namespace boost; }

  • 你可以导入选中的符号。

    using std::string;

  • 他们可以跨越多个文件(很重要的优势)

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

底线:命名空间的方式在C ++中去。



文章来源: Is a class with only static methods preferable to a namespace?