namespace 是c++的命名空间。为了在编程时解决起名容易重复的问题,提出了命名空间的概念。在同一个命名空间中对变量,函数,类等起名不能重复。而当在不同的命名空间时这些名字是可以重复的。比如:
namespace n1
{
int a;
}
namespace n2
{
int a;
}
使用时可以这样:
n2::a = 8;
n1::a = 8;
也可以声明我要使用的命名空间是n2:
using namespace n2;
这样以后默认的命名空间就是n2了,可直接写:
a = 8;
同n2::a = 8;
而using namespace std;
中的std是标准库函数使用的命名空间。这里先要说一下包含库函数的方法。老式的方法是:
#include <stdio.h>
这是为了和c兼容,他不用命名空间就可以直接调用里面的库函数如:
printf("%d",2);
而新式的方法是:
#include <cstdio>
这是为了更好的对类进行支持,但要使用命名空间如:
using namespace std;
printf("&d",2);
如果不加上using namespace std;这一句
那么在程序中用std::cout,std::cin,std::endl效果也是一样的
如果编译器同时支持<iostream>和
<iostream.h> 。如果使用了#include
<iostream>, 得到的是置于名字空间std下的iostream 库的元素;
如果使用#include <iostream.h>,得到的是置于全局空间的同样的元素。在全
局空间获取元素会导致名字冲突,而设计名字空间的初衷正是用来避免这种名
字冲突的发生.