到目前为止,我们使用到的库函数基本都属于命名空间std,而程序也是显示的将这一带你标示出来,std::cin,作用域操作符(::)的意思是:编译器应该从操作符左侧名字的作用域中寻找右侧的那个名字。
上面的那个方法很繁琐,我们将使用一种最安全的方法using声明,之后将会介绍另一种方法。
首先就是using的用法
using namespace::name;
那么就有接下来的这段:
#include<iostream>
using std::cin;
int main()
{
int i;
cin >> i; //1
cout << i; //2
std::cout << i; //3
return 0;
}
- 正确,cin有std:: cin的声明
- 错误,没有对应的using声明,必须使用完整的名字
- 正确,显式的从std中使用cout
每个名字都需要使用using声明
按照规定的,每个using声明引入命名空间中的一个成员。例如,可以把要用到的标准库中的名字都以using声明表示出来,但这样子很呆,比如:
#include<iostream>
using std::cin;
using std::cout;
using std::endl;
int main()
{
int i;
cin >> i;
cout << i<< endl;
return 0;
}
如此的话看着每需要一个函数就要定义一次,很呆。所以我们现在先不用了解怎么弄,先这样子
#include<iostream>
using namespace std;
int main()
{
int i;
cin >> i;
cout << i<< endl;
return 0;
}
之后会再进行了解namespace。
头文件不应该包含using声明
位于头文件中的代码一般来说不应该使用using声明。这是因为头文件的内容会拷贝到所有引用它的文件中去,如果头文件中有using声明,那么每个使用了该头文件的文件就会有这个声明。对于某些程序员来说,由于不经意间包含了一些名字,反而可能产生始料未及的名字冲突。