1、 新的名称空间特性
通过定义一种新的声明区域来创建命名的名称空间。
名称空间可以是全局的,也可以位于另一个名称空间中,但不能位于代码块中,
任何名称空间中的名称都不会与其他名称空间中的名称发生冲突。
名称空间是开放的(open),即可以把名称加入到已有的名称空间中。
访问给定名称空间中的名称,通过作用域运算符:: 使用名称空间来限定该名称
Jack::Pail =12.34;
2、 using声明和using编译指令
using声明使特定的标识符可用;
using声明由被限定的名称和它前面的关键字using组成
例如:using Jill::fetch;
Using声明将特定的名称添加到它所属的声明区域中
例如:main()中的using声明using jill::fetch将fetch添加到main()定义的声明区域中。完成该声明后,便可以使用名称fetch代替Jill::fetch
#include
using namespace std;
namespace Jill
{
double bucket(double n){}
double fetch;
struct Hill{};
}
char fetch;
int main()
{
using Jill::fetch; //using声明
//double fetch; /invalid fetch重定义
//此处的fetch 覆盖了同名的全局变量 char fetch;
cin >> fetch; //输入的值传入到using Jill 中的fetch
cin >> ::fetch; //输入的值传入到全局定义变量char fetch中
system("pause");
return 1;
}
/*
由于using声明将名称添加到局部声明区域中,因此这个示例避免了将另一个局部变量也命名为fetch。
另外,和其他局部变量一样,fetch也将覆盖同名的全局变量。
*/
using编译指令使整个名称空间可用;
using 编译指令由名称空间和它前面的关键字using namespace组成,它使名称空间中的所有名称都可用,而不需要使用作用域解析运算符。
在全局声明区域中使用using编译指令,将使该名称空间的名称全局可用。
例如:
#include
using namespace std; //将名字放在全局名称空间中
。。。。。。
在函数中使用using编译指令,将使其中的名称在该函数中可用。
例如:
Int main()
{
Using namespace jack; //jack命名空间在函数main中可以使用
}
Demo1:
#include
Int main()
{
Using namespace std;
}
首先,#include语句将头文件iostream放到名称空间std中。然后,using编译指令是该名称空间在main()函数中可用。
Demo2:
#include
Using namespace std;
Int main()
{
……
}
这将名称空间std中的所有内容导出到全局名称空间中
同时如果系统不支持名称空间,可以将前两行替换为:
#include<iostream.h>