什么是命名空间?为什么要写using namespace std;这句话呢?
这是C++新引入的一个机制,主要是为了解决多个模块间命名冲突的问题,就像现实生活中两个人重名一个道理。C++把相同的名字都放到不同的空间里,来防止名字的冲突。
例如标准C++库提供的对象都存放在std这个标准名字空中,比如cin、cout、endl,所以我们会看到在C++程序中都会有using namespace std;这句话了,如程序:
#include<iostream> using namespace std; int main() { cout<<"Nice to meet you!"<<endl; return 0; }
程序用到cout和endl则必须提前告知使用std这个命名空间,除此以外,还有另外两种写法。
第二种:用域限定符::来逐个制定,刚才的代码还可以写成:
#include<iostream> int main() { std::cout<<"Nice to meet you!"<<std::endl; return 0; }
看到了吗?cout和endl前面分别用std::指明,表示来自std。
第三种:用using和域限定符一起制定用哪些名字,如代码:
#include<iostream> using std::cout; using std::endl; int main() { cout<<"Nice to meet you!"<<endl; return 0; }
看到了吗?在前面先用using对具体的名字进行声明也可以。
以上三种,大家用哪种都可以,为今后统一方便,我们教程中统一采用第一种写法。
值得一提的是,其实早期的C++标准是没有命名空间这个概念的,头文件包含也和C一样,都是带.h后缀的。只是新标准中使用不带.h的头文件包含时,必须要声明命名空间,并且包含头文件在前,声明使用的名字空间在后。
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程