Article Outline
3.1
TOC
Collection Outline
3.1 命名空间的using声明
目前为止用到的库函数基本上都属于命名空间std,而程序也显式地将这一点标示出来了。作用域操作符(::)的含义是:编译器应从操作符左侧名字所示的作用域中寻找右侧的名字,因此,std::cin的意思就是要使用命名空间std::中的名字cin。
使用using声明无须专门的前缀也能使用所需的名字。using声明具有如下的形式:
using namespace::name;
一旦声明了上述语句,就可以直接访问命名空间中的名字:
#include <iostream>
using std::cin;
int main()
{
int i;
cin >> i; // 正确:cin和std::cin含义相同
cout << i; // 错误:没有对应的using声明,必须使用完成的名字
std :: cout << i; // 正确:显式地从std中使用cout
return 0;
}
每个名字都需要独立的using声明
按照规定,每个using声明引入命名空间中的一个成员。重写1.2节的程序如下:
#include <iostream>
using std::cin;
using std::cout; using std::endl;
int main()
{
cout << "Enter two numbers:" << endl;
int v1, v2;
cin >> v1 >> v2;
cout << "The sum of " << v1 << " and " << v2 << " is " << v1 + v2 << endl;
return 0;
}
头文件不应包含using声明
位于头文件的代码一般不应使用using声明。这是因为头文件的内容会拷贝到所有引用它的文件中去。对于某些程序来说,由于不经意间包含了一些名字,反而可能产生始料不及的名字冲突。