C++命名空间namespace

140 阅读2分钟

命名空间

设计目的:

1.解决命名冲突问题

2.结构化层次化管理名称

 

 

使用方法:

1.通过namespace关键字声明一个新的命名空间, 格式为 namespace + 新的命名空间名称 { 变量,函数,类等};

2.之后如果要使用命名空间中的成员,那么通过作用域解析符来访问特定命名空间中的成员;

3.或者通过using 关键字,使用using + namespace+命名空间操作,将命名空间中的名称全部导出来;这个指令会告诉编译器,后续的代码将使用指定的命名空间中的名称。(但这样做,就增大了命名冲突的风险)

image.png

4..或者还可以通过using  命名空间::成员名 ,这样的操作来向当前作用域导入特定命名空间的特定的成员;特别注意这里using的性质是声明,而前两种方式则属于编译指令

 

 

 

特性与注意事项:

1.命名空间可以嵌套定义;

2.命名空间可以在不同的地方声明,比如同一文件的不同位置,不同文件,最后编译的时候,会将所有同名命名空间整合在一起;

3.不连续的命名空间,这里承接上一点,虽然可以在不同文件声明同一个命名空间,但是在不同文件中使用不属于当前文件定义的命名空间中的成员时,需要提前声明;而同一文件中的命名空间前后顺序则不影响

image.png

4.相同命名空间不能存在同名变量,不同命名空间可以存在同名变量而互不影响

5.无名命名空间,顾名思义,没有具体名字的命名空间,只作用于当前文件,当前文件访问其成员可以无需添加作用域解析符,同时其成员对外部文件不可见

image.png