命名空间(一)

一 概述:

(一)命名空间功能:为防止名字冲突提供了更加可控的机制,命名空间能够划分全局命名空间,一个命名空间就是一个作用域。

(二)命名空间特性:

1.每个命名空间本身是一个作用域

*命名空间中的实体称为命名命名空间成员,每个成员的名字必须引用该命名空间中的唯一实体。

*不同命名空间是不同作用域,所以可以具有同名成员。

2.命名空间可以是不连续的

*与作用域不同,命名空间可以在几个分离的部分中定义(例如多个文件),命名空间由它的分离定义部分的总和构成,是累积的。

*一个命名空间的分离部分可以在不同文件中,在不同文件中的命名空间定义也是累积的。

*可以用分离的接口文件和实现文件构成命名空间:定义类的命名空间成员、以及作为类接口的一部分函数声明和对象声明,可以放在头文件中,使用命名空间成员的文件可以包含这些头文件;命名空间成员的定义可以放在单独的源文件中。

*全局作用域:定义在全局作用域的名字是定义在全局命名空间的。全局命名空间是隐式的,可以用作用域操作符引用全局命名空间的成员如:::member_name。

*命名空间可以在全局作用域或其他作用域内部定义,但不能在函数或类内部定义。


二 命名空间的使用:

(一)命名空间的定义:

*格式:namespace+命名空间名字+{},不要加分号;。

*命名空间的名字必须在定义命名空间的作用域中是唯一的。

(二)命名空间成员的定义:

*可以在命名空间内部直接定义。

*也可以在命名空间外部定义。格式:返回类型+命名空间名字::+函数名,类的成员函数类似。

(三)使用:

1.using声明:一次只引入一个命名空间成员。

*格式:using 命名空间名字::member;

*作用域:从using声明点开始,到包含该using声明的作用域的结尾。

*出现位置:全局作用域、局部作用域或者命名空间作用域中。类作用域中的using声明局限于被定义类的基类中定义的名字,但类成员函数的定义中可以使用其它。

2.using指示:使特定命名空间的所有名字可见。

*格式:using+namespace+命名空间名字。

*尽量少用,容易造成名字冲突;最好针对每一个名字用using声明。

3.命名空间别名:较短的同义词与命名空间名字关联。

*格式:namespace+命名空间别名+=+原来的命名空间名字+;。如:namespace lbj=lebron james;。




















评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值