C++は

2012-02-08 7 views
0

私はC++は

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

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

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

tcpがクラスであるところの名前空間を使用してboost::asio::ip::tcpなくを使用してを使用していることに気づきました。 このような方法でそれを書く利点は何ですか?

答えて

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をまったく使用せず、各使用時に名前を完全修飾することです。

1

ディレクティブを使用してとは対照的に、使用して宣言(である。

あなたtcpクラスへの「ショートカット」を与えるboost::asio::ip::tcp;を入力ではなくboost::asio::ip名前空間の残りの部分へ。

+0

ああ、上記のLuchianの詳しい説明を見てください;) –