我有点想知道 namespace
和 using
在 C++ 中,基本上我想知道差异并找出如何以最佳方式使用它。
在我看来,有(至少)三种方法来解析类名,但我不确定如何从中选择:
-
using namespace <namespace>
-
using <namespace>::<what_to_use>
-
<namespace>::<what_to_use> <use_it>
我想知道优势,特别是如果以一种或另一种方式涉及性能,如果它只是语法和偏好问题,或者是否还有其他我没有考虑过的事情。
最佳答案
首先是 using namespace directive ,它将指定命名空间中的所有符号名称带入您当前的命名空间,无论您是否需要/使用它们。当然不受欢迎。
第二个是 using namespace declaration 。它只会在您当前的命名空间中带来指定的符号名称。优点是您不必每次都键入完全限定名称。
第三个是符号的完全限定名称。缺点是您必须在使用该符号的任何地方键入完全限定名称。
显然,Second 和 Third 是更合适的。它们中的任何一个都没有性能差异。唯一的区别是您输入的字符数量。只需根据您的编码标准指定的内容进行选择。
编辑:
正如@Jerry 指出的那样,将声明与 ADL(参数相关查找)结合使用可能会导致不良影响。
你可以在我的一个答案中找到详细的解释:
Detailed explanation on how Koenig lookup works with namespaces and why its a good thing?
在该部分下,
为什么对Koenig算法的批评?
关于C++ 名称解析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14136720/