代码之家  ›  专栏  ›  技术社区  ›  ckv

命名空间与C++

  •  6
  • ckv  · 技术社区  · 14 年前

    编辑:实际上我指的是自定义应用程序,而不是像STL或其他任何东西那样的标准库。

    9 回复  |  直到 14 年前
        1
  •  11
  •   James Curran    14 年前

    在C++中,在最初实现后的某个时间,名称空间被添加到语言中,因此有很多应用程序代码没有使用它们。因此,也是由于它们添加得太晚,所有标准库都放在一个名称空间中。因此用一个简单的 using namespace std; 如果你想的话,你几乎可以忽略名称空间。

    另一方面,在C#中,从一开始就涉及到名称空间,库被划分为大量名称空间。此外,每个人用来创建初始代码的向导默认情况下都将类放入命名空间中。这迫使人们对名称空间有了更大的认识。

        2
  •  7
  •   Klaim    14 年前

    C++中的命名空间与.NET、ActionScript和java(共享相同的概念)完全不同。它们根本不是同一个概念。

    在.Net、ActionScript和Java中,名称空间更多地是关于模块而不是名称。它们迫使开发人员将代码组织在单独的名称空间中,每个名称空间都有一个目的,即上下文。由于这些语言是动态的(而不是像C++一样静态),命名空间允许类型绑定到代码,使得编译速度很快,因为您只需要在文件中使用的类型的名称(命名空间+名称)。

    在C++中没有模块COMPCEP,只有编译单元彼此不知道。

    现在,关于它们的用法,通常使用C++中的命名空间封装模块(可执行文件或DLL/so)、一些实现代码或任何有用的代码子部分。也就是说,大多数时候最好不要有太深的名称空间层次结构。

    C++中的命名空间是一种与其他语言不同的特性,它也或多或少地在代码中写得很清楚。事实上,它是如此的不同,以至于你根本无法用同样的方式来管理它,这使得当你从say.Net来的时候,代码真的很难理解。

        3
  •  3
  •   Dirk is no longer here    14 年前

    很少使用

    你能用相关的经验主义来支持这一点吗? Boost Qt ,STL。。。都使用名称空间。

        4
  •  2
  •   user195488 user195488    14 年前

    namespaces 默认情况下。我想其他(旧的)ide没有。

    NET从一开始就鼓励它。命名空间并不总是C++中原始实现的一部分。它在.Net中得到了广泛的应用。

        5
  •  1
  •   Nemanja Trifunovic    14 年前

        6
  •  0
  •   graham.reeds    14 年前

    从在5个不同的地方工作,我可以说5个使用名称空间中的2个在我加入之前。

    我猜C++中的命名空间没有得到足够的使用(因为它们应该),这是因为语法不规则。

    ie:我想写这个:

    namespace xml::xmpp::core { }

    但我们必须写下:

    namespace xml { namespace xmpp { namespace core { } } }

    在此声明,我谨致函:

    class xml::parser;

    但我得写

    namespace xml { class parser; }

    using namespace xml::xmpp::core;

        7
  •  0
  •   Poni    14 年前

    名称空间是您的 最好的朋友

        8
  •  0
  •   dmckee --- ex-moderator kitten    14 年前

    请注意,我是一个物理学家,我看到的大部分代码都是由其他物理学家编写的,所以这可能是我领域的一个人工制品。

        9
  •  -1
  •   Sam Miller    14 年前

    这个 Boost C++ libraries 广泛使用名称空间。