命名空间的使用
嵌套命名空间
规则:外围命名空间中声明的名字被嵌套命名空间中同一名字的声明所屏蔽。嵌套命名空间内部定义的名字局部于该命名空间,外围命名空间之外的代码只能通过限定名引用嵌套命名空间的名字。
- namespace cpp_primer{
-
-
namespace QueryLib{
-
class Query{/*......*/};
-
Query operator+(const Query&, const Query&);
-
}
-
-
namespace Bookstore{
-
class Item_base{/*....*/};
-
class Bulk_item::public Item_base{/*......*/};
-
}
-
}
当库提供者需要防止库中每个部分的名字与库中其他部分的名字冲突时,嵌套命名空间是很有用的。
未命名的命名空间
未命名的命名空间以关键字namespace开头,接在关键字之后的是由花括号定界的声明块。
未命名的命名空间是不能够跨越多文件的。
命名空间成员的使用:using声明和using指示
1.using声明
一个using每次只能引入一个成员。
2.using声明的作用域
using声明的作用域与常规作用域规则同。
3.命名空间别名
a. namespace primer = cpp_primer;
意思是用primer替代cpp_primer.
b. namespace Qlib = cpp_primer::QueryLib;
Qlib::Query tq;
4.using指示
不同于using声明,using指示不可控制哪些成员是可见的——它们都是可见的。
阅读(4071) | 评论(0) | 转发(0) |