'using'和'using namespace'的区别

Difference between 'using' and 'using namespace'

本文关键字:using 区别 namespace      更新时间:2023-10-16

在boost库中,经常有这样的例子:

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

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

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

谁能解释一下:

  1. usingusing namespace的差异;
  2. using代替using namespace有什么好处;
  3. 前向申报usingusing namespace的差异;

谢谢

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

#include <iostream>
void print(){
using std::cout; 
using std::endl;
cout<<"test1"<<endl;
}
int main(){
 using namespace std;
cout<<"hello"<<endl;
print();
return 0;
}
  • 当使用"using namespace std"时,std作用域中的所有元素都在函数作用域中可用。
  • 当使用"using std::cout"时,我们明确地指出了函数需要std下的哪个元素,而不需要导入std下的所有元素。

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