0

私はそれに気づきました

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

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

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

クラスである名前空間の使用と使用を使用boost::asio::ip::tcpしません。そのような方法でそれを書くことの利点は何ですか?tcp

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 に答える