【问题标题】:Difference between 'using' and 'using namespace'“使用”和“使用命名空间”之间的区别
【发布时间】:2014-09-20 06:47:36
【问题描述】:

在boost库中,经常有包含库的例子:

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

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

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

谁能解释一下:

  1. using和using namespace的区别;
  2. 否定使用using namespace 而使用using 有什么好处;
  3. 前向声明using和using namespace的区别;

谢谢

【问题讨论】:

  • using namespace 的可能重复项
  • @user657267 不是真的。
  • @0x499602D2 好吧,IMO,链接的答案试图指出这两个语句有完全不同的用例,你不能说using somenamespace,也不能说using namespace notanamespace。
  • @user657267 我在发布这个问题之前看到了链接的答案,但我认为它没有充分回答我的问题
  • 正确的术语是“使用声明”和“使用指令”。 stackoverflow.com/q/16152750/981959有一些相关的答案

标签: c++ namespaces


【解决方案1】:

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

【讨论】:

    【解决方案2】:
    #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 范围内的所有元素都在函数范围内可用。
    • 在使用“使用 std::cout”时,我们明确提及函数需要 std 下的哪些元素,而不导入 std 下的所有元素。

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

    【讨论】:

      猜你喜欢
      • 2011-03-27
      • 2017-04-30
      • 1970-01-01
      • 2020-08-21
      • 2011-12-10
      • 2020-10-21
      • 2016-05-28
      • 2012-08-12
      • 2018-06-23
      相关资源
      最近更新 更多