0

包含什么using namespace std;
既然所有与 IO 相关的函数都存在于 IOstream 头文件中,为什么我们要同时使用 IOStream 和 Std 命名空间?

4

3 回答 3

1

命名空间允许在一个名称下对类、对象和函数等实体进行分组。这样,全局作用域可以划分为“子作用域”,每个子作用域都有自己的名称。

命名空间的格式是:

 namespace identifier
 {
     entities
 }

例如

// using
#include <iostream>
using namespace std;

namespace first
{
  int x = 5;
  int y = 10;
}

namespace second
{
  double x = 3.1416;
  double y = 2.7183;
}

int main () {
  using namespace first;
  cout << x << endl;
  cout << y << endl;
  cout << second::x << endl;
  cout << second::y << endl;
  return 0;
}

您可以在http://www.cplusplus.com/doc/tutorial/namespaces/中阅读更多相关信息

于 2013-09-23T09:34:47.157 回答
1

除了这里的其他答案,重要的是要注意using 声明using 指令之间的区别。

using namespace std;

是一个using 指令,允许在没有限定的情况下使用该命名空间中的所有名称。例如:

using namespace std;
string myStdString;
cout << myStdString << endl;

这与以下情况形成对比:

using std::string;

是一个using 声明,允许使用来自指定命名空间的特定名称而无需限定。以下将无法编译:

using std::string;
string myStdString; // Fine.
cout << myStdString << endl; // cout and endl need qualification - std::

关键字受using范围约束:

void Foo()
{
    {
        using namespace std;
        string myStdString; // Fine.
    }
    string outOfScope; // Using directive out of scope.
    std::string qualified; // OK
}

将 using 指令放在头文件的全局范围内通常是一个坏主意 - 除非您非常确定包含该文件的任何内容都不会包含冲突的类名,并且会产生讨厌的副作用。

于 2013-09-23T09:42:34.943 回答
0

命名空间允许我们将一组全局类、对象和/或函数组合在一个名称下。如果您指定using namespace std,则不必std::在整个代码中添加。程序将知道在 std 库中查找对象。命名空间 std 包含标准 C++ 库的所有类、对象和函数。

于 2013-09-23T09:32:00.313 回答