0

我注意到

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

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

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

使用usingboost::asio::ip::tcp和 not using namespace wheretcp是一个类。有人能告诉我这样写有什么好处吗?

4

2 回答 2

3

您不会使用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并完全限定每次使用的名称。

于 2012-02-08T08:52:30.727 回答
1

它是一个using 声明(与using 指令相反。

键入boost::asio::ip::tcp;将为您提供通往该类的“快捷方式” tcp,但不会为您提供命名空间的其余部分boost::asio::ip

于 2012-02-08T09:03:51.393 回答