用其他名字来命名数组(2)

名字空间别名namespace alias 允许用一个可替代的短的或更一般的名字与一个现

有的名字空间关联起来。例如

// 提供一个更一般化的别名

namespace LIB = IBM_Canada_Laboratory;

// 提供一个更短的别名

namespace DFA = Disney_Feature_Animation;

然后,这个别名就可以用作原始名字空间的同义词。例如

#include "IBM_Canada.h"

namespace LIB = IBM_Canada_Laboratory;

int main()

{

LIB::Array<int> ia(1024);

// ...

}

别名也可以用来封装正在使用的实际名字空间。例如,在此情形下,我们可以通过改变

分配给别名的名字空间来改变所使用的声明集而无需改变通过别名访问这些声明的

实际代码。例如

namespace LIB = Cplusplus_Primer_3E;

int main()

{

// 在这种情况下下面的声明无须改变

LIB::Array<int> ia(1024);

// ...

}

但是,如果要让这项技术在实际工作中发挥作用,那么两个名字空间中的声明必须提供

同样的接口。例如,下面的代码就不能工作,因为Disney 的Array 类需要一个类型参数和一

个数组长度参数。

namespace LIB = Disney_Feature_Animation;

int main()

{

// 不再是一个有效的声明

LIB::Array<int> ia(1024);

// ...

}

程序员常常希望在访问名字空间内声明的名字时不加限定修饰符,即使我们已经为名字

空间标识符提供了较短的别名,在每次访问该名字空间内声明的名字时,也都要进行限定,还

是太麻烦。using 指示符using directive 使名字空间内的所有声明都可见,这样这些声明

能够不加限定地使用。例如

#include "IBM_Canada_Laboratory.h"

// 使所有的名字都可见

using namespace IBM_Canada_Laboratory;

int main()

{

// ok: IBM_Canada_Laboratory::Matrix

Matrix mat( 4,4 );

// ok: IBM_Canada_Laboratory::Array

Array<int> ia( 1024 );

// ...

}

using 与namespace 都是关键字,被引用的名字空间必须已经被声明了,否则,会引起编译

错误。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值