我注意到了
#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/