using namespace ***与 using ***区别

2014年4月15日 由 Creater 留言 »
以boost为例子,使用代码来展示区别
在使用using ***时
using boost::asio::ip::tcp;
则使用tcp下的命名空间,就编程时可以简化使用
tcp::resolver resolver(io_service);
tcp::resolver::query query(argv[1], "daytime");

 

  如果使用using namespace ***的话
using namespace  boost::asio::ip;
   在编程中使用时,可以直接使用ip下的其他类或者全局对象
 tcp::resolver resolver(io_service);
 tcp::resolver::query query(argv[1], "daytime");

综上得出:using ***仅仅为了简化限定域,比如using boost::asio::ip::tcp,并没有将tcp中的所有类型或者全局对象导入。

using namespace ***则做更多的工作,using namespace std,则会把std中的所有类型和全局对象都导入。

另外在头文件中尽量少用using namespace ***,可以在头文件中使用完全限定域,在实现文件中再使用。

广告位

评论已关闭.