​ 命名空间是一块程序员可以自己命名的内存区域,用于解决同名冲突的问题。

​ 举例来说,某班及内有三个张三,分别坐在班级的第一排、第三排和最后一排。当老师喊张三时,三个张三都站起来应答,这就是同名冲突。如果老师说”第一排的张三“或者”第三排的张三“,就会有且仅有一个张三站起来应答,这里的”第一排“或者”第三排“就是所谓的命名空间

​ C++中命名空间的作用类似于操作系统中的目录和文件的关系:由于文件很多,不便管理,而且容易重名,于是人们设立若干子目录,把文件分别放到不同的子目录中,同名的文件放入不同的子目录中就不会产生冲突。

​ 使用举例如下:

#include<iostream>

namespace us1
{
int a;
} namespace us2
{
int a;
} using namespace us1; int main()
{
us1::a = 5;
us2::a = 2;
std::cout <<"us1::a = " << us1::a << "\n";
std::cout <<"us2::a = " << us2::a << "\n";
std::cout << a << "\n";
}

​ 输出如下:

us1::a = 5
us2::a = 2
5

​ 上述代码中定义了两个命名空间,其中都含有变量 a ,当在 main 函数中使用变量 a 时,要指明使用的是哪个命名空间内的变量 a ,就如使用某一文件需要其文件路径一样,us1::aus2::a 起的就是这样的作用。

​ 另外,由于语句 using namespace us1; 的作用,使 us1 成为本程序的默认命名空间,故程序中的 a 默认为 us1::a

​ 为了解决 C++ 标准库中的标识符与程序中的全局标识符之间以及不同库中的标识符之间的同名冲突,应该将不同库的标识符在不同的命名空间中定义(或声明)。标准C++库的所有的标识符都是在一个名为 std 的命名空间中定义的,或者说标准头文件(如 iostream )中函数、类、对象和类模板是在命名空间 std 中定义的。stdstandard (标准)的缩写,表示这是存放标准库的有关内容的命名空间。这样,在程序中用到C++标准库时,需要使用std作为限定。

​ 所以每次写 C++ 代码我们都会先写:

#include<iostream>
using namespace std;

​ 而在上面的代码中,没有 using namespace std; 这一句话,所以使用输出时需要 std::cout

最新文章

  1. 最新版powerdesign16.5连接数据库错误解决
  2. php libevent 扩展使用示例
  3. SPM paired t-test步骤
  4. python 基础理解...
  5. Unity导出的Xcode项目,iOS端管理摄像头的方法
  6. sea.js说明文档
  7. “System.Transactions.Diagnostics.DiagnosticTrace”的类型初始值设定项引发异常。
  8. ollicle.com: Biggerlink – jQuery plugin
  9. 倒计时IE6+
  10. 3个微信小程序体验报告
  11. 解决Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:compile (default-compile) on project autotest_fchtgl: Compilation failure的方法
  12. Python 爬取淘宝商品信息和相应价格
  13. CentOS7系统操作httpd服务 - 开机启动/重启/查看状态
  14. 旅行商问题(Traveling Salesman Problem,TSP)的+Leapms线性规划模型及c++调用
  15. 局域网IP地址
  16. TimesTen数据库表中显示中文乱码的真正原因
  17. Python从入门到放弃Day01
  18. [zw]薰衣草/紫花苜蓿+桑椹/(黑红蓝)霉等植物
  19. rds下载备份集
  20. ubuntu启用root登陆

热门文章

  1. JuiceFS 在理想汽车的使用和展望
  2. Web播放器
  3. 【程序6】用*号输出字母C的图案
  4. Vi方向键变乱码 退格键不能使用
  5. python列表删除和排序
  6. JavaScript之 函数节流(Throttling) 与 防抖(Debounce)
  7. Redis为什么是单线程,高并发快的3大原因详解
  8. 基于Docker部署4.2 版本的zabbix监控平台
  9. 判断一个js变量是否为数组
  10. Mac版jdk1.6