命名空间
设计目的:
1.解决命名冲突问题
2.结构化层次化管理名称
使用方法:
1.通过namespace关键字声明一个新的命名空间, 格式为 namespace + 新的命名空间名称 { 变量,函数,类等};
2.之后如果要使用命名空间中的成员,那么通过作用域解析符来访问特定命名空间中的成员;
3.或者通过using 关键字,使用using + namespace+命名空间操作,将命名空间中的名称全部导出来;这个指令会告诉编译器,后续的代码将使用指定的命名空间中的名称。(但这样做,就增大了命名冲突的风险)
4..或者还可以通过using 命名空间::成员名 ,这样的操作来向当前作用域导入特定命名空间的特定的成员;特别注意这里using的性质是声明,而前两种方式则属于编译指令
特性与注意事项:
1.命名空间可以嵌套定义;
2.命名空间可以在不同的地方声明,比如同一文件的不同位置,不同文件,最后编译的时候,会将所有同名命名空间整合在一起;
3.不连续的命名空间,这里承接上一点,虽然可以在不同文件声明同一个命名空间,但是在不同文件中使用不属于当前文件定义的命名空间中的成员时,需要提前声明;而同一文件中的命名空间前后顺序则不影响
4.相同命名空间不能存在同名变量,不同命名空间可以存在同名变量而互不影响
5.无名命名空间,顾名思义,没有具体名字的命名空间,只作用于当前文件,当前文件访问其成员可以无需添加作用域解析符,同时其成员对外部文件不可见