c++使用声明关键字用法在Boost库的示例中看到

标签 c++ boost using-directives

我注意到了

#include <iostream>
#include <boost/array.hpp>
#include <boost/asio.hpp>

using boost::asio::ip::tcp;

int main(int argc, char* argv[]){
    ....
}

使用 using boost::asio::ip::tcp 而不是 using namespace 其中 tcp 是一类。 有人可以告诉我以这种方式编写它有什么好处吗?

最佳答案

您不会使用 namespace boost::asio::ip 的所有内容填充全局命名空间。

您只使用您需要的。举个例子:

namespace A
{
   void foo() {}
   void goo() {}
}

namespace B
{
   void foo() {}
   void goo() {}
} 

如果你要这样做

using namespace A;
using namespace B;

尝试调用这些方法时会出现歧义。

但是你可以这样说:

using A::foo;
using B::goo;

歧义就会消失。

当然,最安全的方法是完全不使用 using 并在每次使用时完全限定名称。

关于c++使用声明关键字用法在Boost库的示例中看到,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9190114/

相关文章:

c++ - 在另一个 .cpp 文件中访问一个 .cpp 文件中定义的全局变量

c++ - 如何在 Map 中存储集合容器的迭代器列表

c++ - 复制构造函数和重载的加法运算符

c++ - Boost信号2未编译

c# - Visual Studio 2017 Collapsing 还删除了未使用的使用

python - 如何用 OpenMP 编译 OpenCV

python - boost Python "cannot open source file ' pyconfig.h '"when importing using "#include <boost\python.hpp>"

c++ - 奇怪的 Boost auto_cpu_timer 未定义引用错误

c++ - 未命名命名空间中 `using namespace` 的范围

resharper - 如何防止 ReSharper 在添加 using 指令时缩短命名空间?