为什么要在几乎每一个C++程序头文件下面加上一句:
using namespace std;
参考大佬文章才逐渐了解到,C++标准库被定义在std这个命名空间里。那么在使用C++标准库里的函数或类时就需要“指明”所使用的函数或类的命名空间,也就是std。
命名空间是为了防止编译器无法判断不同库中相同名称的函数、类、变量等,可以作为附加信息来区分不同库中相同名称的函数、类、变量等。
正是由于使用了namespace机制,所以C++库也需要被定义到一个命名空间中。这个命名空间就是那个常见的std。
在我看来命名空间指定有两种方式:
第一种:直接指定标识符
#include<iostream>
int main()
{
int test;
std::cout<<"please input a number:";
std::cin>>test;
std::cout<<"yes,you are right"<<std::endl;
}
显然,这样很是麻烦。我们在使用iostream里的cout和cin时需要不断地说明其所在的命名空间:std。
第二种:使用using关键字。
1.using namespace 命名空间名称;
该命名空间中的所有成员都会被引入到当前范围中。
#include<iostream>
using namespace std;
int main()
{
int test;
cout<<"please input a number:";
cin>>test;
cout<<"yes,you are right"<<endl;
}
2.using 命名空间名称::成员;
只是让指定的命名空间中的指定成员被引入到当前范围。
#include<iostream>
using std::cin;
using std::cout;
using std::endl;
int main()
{
int test;
cout<<"please input a number:";
cin>>test;
cout<<"yes,you are right"<<endl;
}