命名空间
如果有两个函数,一个用于获取磁盘卷标名称,一个用于获取文件名称,都想命名为name,则必然会发生冲突,这个时候就需要命名空间这个东西了。
命名空间是C++中的一种机制,它防止在程序中将相同的名称用于不同的事情时可能发生的问题,其方法是将一组给定的名称与一种姓(family name)关联起来,这种姓就是命名空间名称。
命名空间与实体名称之间通过作用域解析运算符(::)进行连接,例如:
mynamespace::name
还是返回到最开始的例子,下面两行代码代表了不同的运算:
disk::name // 这个就是名为disk命名空间中的name运算符 file::name // 这个就是名为file命名空间中的name运算符
另外还需要注意下面几种用法:
/* 告诉编译器在不打算指定命名空间名称的情况下使用命名空间std中的cout。 在之后的源文件中所使用的cout,编译器都假定为std::cout */ using std::cout; /* 如果要与其他命名空间的cout混用 */ cout // 由于前面声明了using std::cout,所以是std命名空间中的cout std::cout // std命名空间中的cout mynamespace::cout // mynamespace命名空间中的cout
自己的体会(可能会有错误,我会在之后的实践中加以修正与补充完善):
1、using namespace 一般放在 #include 之后
2、要引用多个命名空间需要撰写多行using namespace 语句