博客为本人原创,刚接触C++,作为学习笔记使用,如有错误请各位多批评!
1.名空间相当于人为定义一个作用域,解决了名称冲突的问题,在大项目中有重要意义。
2.使用方法:
(1)名::调用对象
(2)声明 using 名::对象
(3)using namespace 名(类似友元类)
3.(2)(3)两种方式区别在于第二种声明后如果在本作用域下声明同名内容,编译无法通过,相当于重复定义;而第三种只是说我这个作用域可以使用声明的作用域里面的内容,当在本作用域声明同名内容时,不会发生冲突,而是会覆盖其他作用域的同名内容。
4.名空间可以进行域外定义,也可以合并定义,还可以嵌套(名空间里面的名空间)。
5.一般来说,名空间里的内容都要进行初始化。
6.名空间也可以有别名,使用方法:namespace 别名 = 本名;,别名必须要初始化,且不能重复做其他名字的别名。
7.类就是一个特殊的名空间。
8.名空间是横向的切分,其嵌套使得名空间内部可以进行纵向切分,比如几个小组里面的张三小组,张三小组又分为张三A,张三B等等,对于嵌套的调用要先说明外部空间,层层剥开,就好像要查找实验中学二年级1班的小明,需要从大范围逐步缩小到小范围。嵌套名空间满足屏蔽原则(第3点中的覆盖)。
9.嵌套类即类中再套类,这两者关系与名空间不同,其各自内存空间是独立的,嵌套类意义在于隐藏代码和防止头文件的包含,但破坏了封装。
10.对于嵌套类来说,内外的类可以相互访问(有血缘关系),但外部类只能访问内部类public下的内容,而内部类则可以访问外部类的所有内容,也就是说,类虽然是特殊的名空间,但它自己也有特殊性。
11.如果要从外界访问被嵌套的类,要受到外部类权限的制约。