C++_基础6-名称空间
名称空间
背景:C++中,名称可以是变量、函数、结构、枚举、类以及类和结构的成员。当随着项目的增大,名称相互冲突的可能性也将增加。例如许多厂商的类库,可能导致名称冲突。这种冲突被称为名称空间问题。
解决措施:C++标准提供了名称空间工具;以便更好地控制名称的作用域。
传统的C++名称空间
介绍一些术语,熟悉名称空间的概念
声明区域(declaration region),是可以在其中进行声明的区域。例如,可以在函数外面声明全局变量,对于这种变量,其声明区域为其声明所在的文件。对于在函数中声明的变量,其声明区域为其声明所在的代码块。
潜在作用域(potential scope),变量的潜在作用域从声明点开始,到其声明区域的结尾为止。因为变量必须先定义后使用。
作用域(scope),变量并非在其潜在作用域都是可见的,它可能被另一个嵌套声明区域中的声明的同名变量隐藏。变量对程序可见的范围被称为作用域。
新的名称空间特性
C++通过定义一种新的声明区域来创建命名的名称空间,提供一种声明名称的区域。
新的关键字namespace
举例:创建两个名称空间Jack和Jill
namespace Jack{
double pail;
void fetch();
int pal;
struct Well {…};
}
namespace Jill{
double fetch;
int pal;
struct Hill{…};
}
名称空间是开放的,即可以把名称加入到已有的名称空间中。
namespace Jill{
char * goose(const char *);
}
还有一种方法来访问给定名称空间中的名称,通过作用域解析运算符: :,使用名称空间来限定该名称:
Jack :: pail = 12.34;
Jill :: Hill = mole;
Jack :: fetch();
未被装饰的名称 称为未限定的名称;
包含名称空间的名称,被称为限定的名称;
1 using声明和using编译指令
如果我们不希望每次使用时都对它进行限定,因此C++提供了两种机制(using声明和using编译)来简化对名称空间中名称的使用。
using声明使特定的标识符可用
using编译指令使整个名称空间可用
using声明将特定的名称添加到它所属的声明区域中。例如,main()中的using声明Jill::fetch将fetch添加到main()定义的声明区域中。完成该声明后,便可以使用fetch代替Jill::fetch。using 编译指令将特定的名称空间中的名称添加到它所属的声明区域中。
using声明使一个名称可用,而using编译指令使所有的名称都可用。
using namespace Jack; 使得名称空间Jack中的所有名称都可用。
using namespace std; //使得std名称空间中的变量名在该函数中可用。
为了避免二义性,不允许同时使用两个using声明声明两个不同名称空间中的同名变量
using jack :: pal;
using jill :: pal;
2 using编译指令和using声明之比较
名称空间示例
名称空间及其前途
名称空间旨在简化大型编程项目的管理工作。
============================================
总结
- C++鼓励程序员在开发程序时使用多个文件,一种有效的组织策略是,使用头文件来定义用户类型,为操纵用户类型的函数提供函数原型;并将函数定义放在一个独立的源代码文件中。头文件和源文件一起定义和实现了用户定义的类型及其使用方式。最后,将main()和其他使用这些函数的函数放在第三个文件中。
- 名称空间允许定义一个可在其中声明标识符的命名区域。这样做的目的是减少名称冲突,尤其当程序非常大,并使用多个厂商的代码时。可以通过使用作用域解析运算符、using声明、using编译指令,来使名称空间中的标识符可见。
C++_基础6-名称空间的更多相关文章
- python基础——类名称空间与对象(实例)名称空间
python基础--类名称空间与对象(实例)名称空间 1 类名称空间 创建一个类就会创建一个类的名称空间,用来存储类中定义的所有名字,这些名字称为类的属性 而类的良好总属性:数据属性和函数属性 其中类 ...
- python基础:名称空间与作用域
Python的变量定义后都有自己的作用域,每个作用域内都有名字空间.名称空间就是变量名称与对象的关联关系.Python中使用变量名引用对象,需要使用该变量时,就在命名空间中进行搜索,获取对应的对象.从 ...
- WPF 基础 - x 名称空间详解
名称 种类(默认Attribute) 备注 x:Array 标记拓展 可作为 ListBox.ItemsSource 的值 x:Class 指定与 .cs 中哪个类合并,所指示的类型在声明时使用 pa ...
- 网络虚拟化基础一:linux名称空间Namespaces
一 介绍 如果把linux操作系统比作一个大房子,那命名空间指的就是这个房子中的一个个房间,住在每个房间里的人都自以为独享了整个房子的资源,但其实大家仅仅只是在共享的基础之上互相隔离,共享指的是共享全 ...
- 一、数据库表中字段的增删改查,二、路由基础.三、有名无名分组.四、多app共存的路由分配.五、多app共存时模板冲突问题.六、创建app流程.七、路由分发.八、路由别名,九、名称空间.十、反向解析.十一、2.x新特性.十二、自定义转换器
一.数据库表中字段的增删改查 ''' 直接在modules中对字段进行增删改查 然后在tools下点击Run manage.py Task执行makemigrations和migrate 注意在执行字 ...
- Python 入门基础10 --函数基础3 函数对象、名称空间、装饰器
今日内容 1.函数对象 2.名称空间与作用域 3.函数的嵌套调用与闭包 4.装饰器 一.函数对象 1.1 定义 函数名存放的就是函数地址,所以函数名也就是对象,称之为函数对象 1.2 函数对象的应用 ...
- Spring_day01--注入对象类型属性(重点)_P名称空间注入_注入复杂类型属性_IOC和DI区别_Spring整合web项目原理
注入对象类型属性(重点) Action要new一个service对象,Service中又要new一个Dao对象,现在把new的过程交给spring来操作 1 创建service类和dao类 (1)在s ...
- python基础知识13---函数对象、函数嵌套、名称空间与作用域、装饰器
阅读目录 一 函数对象 二 函数嵌套 三 名称空间与作用域 四 闭包函数 五 装饰器 六 练习题 一 函数对象 1 函数是第一类对象,即函数可以当作数据传递 #1 可以被引用 #2 可以当作参数传递 ...
- python基础之函数参数,名称空间,以及函数嵌套
函数进阶内容梗概: 1. 函数参数--动态传参 2. 名称空间, 局部名称空间, 全局名称空间, 作⽤用域, 加载顺序. 3. 函数的嵌套 4. gloabal , nonlocal 关键字 1. 函 ...
随机推荐
- 深入剖析SolrCloud(三)
作者:洞庭散人 出处:http://phinecos.cnblogs.com/ 本博客遵从Creative Commons Attribution 3.0 License,若用于非商业目的,您可以自由 ...
- day63-webservice 01.cxf介绍
CXF功能就比较强了.CXF支持soap1.2.CXF和Spring整合的非常密切.它的配置文件基本就是Spring的配置文件了.CXF是要部署在服务器才能用的.CXF得放到Web容器里面去发布.CX ...
- 基于rank的优化
------------------siwuxie095 基于 rank 的优化 基于 size 的优化,在大多数情况下 ...
- mask rcnn训练自己的数据集参考文章(推荐)
最近用Mask_RCNN训练模型,下面几篇文章提供了不少帮助,汇总出来,方便以后查找,并向几位博主老师表示感谢 https://blog.csdn.net/qq_29462849/article/de ...
- Ubuntu 复制 拷贝和自适应屏幕
ubuntu 16.04安装vmtools实测无效!!!!!!11 1.解决VMware workstation与主机的粘贴.复制.文件拖拽问题. 2.解决VMware workstations中Ub ...
- sublime text 3安装 vue插件
1.上一个章节讲到Vue.js的环境安装,这一章节主要是针对ST3 如何安装vue插件,来快速的进行vue组件代码的编写. (内容转载自:https://www.cnblogs.com/bluedoc ...
- 奇妙的 Storage::url
发现 这是我在做头像上传功能时发现的,下面是图片上传的业务逻辑. class AvatarController extends Controller { public function update( ...
- Mathematical optimization数学上的最优化
https://en.wikipedia.org/wiki/Mathematical_optimization In mathematics, computer science and operati ...
- 策略与计费控制规则(Policy and Charging Control Rule-PCC Rule)解析及模板样例
内容 PCC规则定义 PCC规则运行 PCC规则模板 PCC规则定义 参考文档: 3gpp ts 23.203-be0 条款6.3 策略与计费控制规则(PCC Rule),即一系列相关信息与一系列相关 ...
- wc.exe C++实现
目录 Github项目地址 PSP表格 解题思路 设计实现过程 测试运行 项目小结 Github项目地址 wc-project PSP表格 PSP2.1 Personal Software Proce ...