2020-C++高级程序设计-C++ 命名空间
命名空间
1. 命名空间的理念和作用
- 理念
- 兼容
- 快速:理解、实现
- 作用:进一步解决了全局变量/函数的名冲突
- 在约束作用域方向,替代static
- 细节特点:
- 别名
- 全局
- 开放
- 可嵌套
- 可重载
- 不可以在同一作用域两次使用using-directive
1 |
|
1.1. 命令空间的目的
- 解决lib的冲突的
- 是在94标准化中出现的
- 重要的原因:避免一些命名问题、宏问题和类问题
- 可以将优先作用域更加有效的表示出来。
1.2. 命令空间的理念
- 兼容
- link不冲突
- 程序中定义新名称时不必担心与其他(比如库)冲突
- 在库里增加名字,不影响用户
- 不同库里含有同名元素,可选择
- 不修改函数的前提下,可消解名冲突
- 避免命名空间的名字之间发生冲突
- 使名字空间可以处理标准库
- 原则:
- 防冲突
- 遇冲突,可选择
- 易扩展,与用户独立
1.3. 命名空间的快速要求
- 理解:10 minutes
- 时间:2 weeks
1.4. 例子
1 |
|
2. 命名空间的两种形式
1 |
|
- declaration:对每一个变量进行管理控制
1 |
|
- directive:全局应用
1 |
|
- 在约束作用域方面,替代static
2.1. 细节
- 别名(namespace本身名字也会冲突)
1 |
|
- 全局:无命名空间,只有
::
默认为全局变量
1 |
|
- 开放:可以多次定义,持续扩展
1 |
|
- 可嵌套
1 |
|
- 重载
1 |
|
1 |
|
- 向前兼容:新的语言成分不应该对以前的程序的影响
- 优先考虑:using-declaration
- .h和非.h文件:如果使用stdio需要写
using namespace std
;
1 |
|
2020-C++高级程序设计-C++ 命名空间
https://spricoder.github.io/2020/07/01/2020-C-plus-plus-advanced-programming/2020-C-plus-plus-advanced-programming-C++%20%E5%91%BD%E5%90%8D%E7%A9%BA%E9%97%B4/