'使用'和'使用命名空间'之间的区别

时间:2014-07-28 23:50:16

标签: c++ namespaces

在boost库中,通常有包含库的示例:

#pragma once
#include <boost/property_tree/ptree.hpp>
using boost::property_tree::ptree;

在我的整个程序中,我一直在导入这样的命名空间:

#include "../MyClass.h"
using namespace MyClassNamespace;

有人可以解释一下:

  1. usingusing namespace;
  2. 之间的差异
  3. 否定使用using namespace支持using;
  4. 的优点是什么?
  5. 前方声明usingusing namespace;
  6. 的差异

    由于

2 个答案:

答案 0 :(得分:23)

using namespace使命名空间的所有名称都可见,而是在命名空间的特定对象上声明using仅使该对象可见。

答案 1 :(得分:3)

#include <iostream>

void print(){
using std::cout; 
using std::endl;
cout<<"test1"<<endl;
}
int main(){
 using namespace std;
cout<<"hello"<<endl;
print();
return 0;
}
  • 在使用“使用命名空间std”时,std范围内的所有元素都在该函数的范围内可用。
  • 在使用“ using std :: cout”时,我们明确提到该功能需要std下的哪些元素,而无需导入std下的所有元素。

这是我在堆栈溢出中的第一个答案,如果我错了,请纠正我!!