本篇文章旨在讲解C++中命名空间的概念以及其相关注意事项!
C++的介绍
C++作为C语言的衍生,其对C语言中的一些缺陷进行了一些的补充和优化。但是C++也对C语言具有兼容性!
本文旨在讲解C++对C语言中当声明的变量与库函数的一些标识符,关键字名字相同的冲突!
为什么要引进命名空间的使用?
在C语言中,当声明的变量名字与库中的一些关键字或者函数名字相同时,C语言会给出警告,编译不通过!例如假设在C语言中定义了一个int 的变量,其名字为rand时,因为rand这个关键字在strlib头文件中是一个函数!所以当定义了与库中关键字相同的变量名字时,编译器会给出警告!代码如下:
放在C语言中,有什么解决方法吗?方法当然是有的,那就是重新定义一个非关键字的变量名!但是这样岂不是很麻烦么?假设在一个大的工程中,你和你的同事分别实现几个不同的功能,这时如果你和你同事的定义的变量名相同,那么该修改谁的变量名字呢?这显然不是很合适!于是C++就对C语言的这些不足之处做出了一些修改!以方便定义变量名!对于上述问题的存在,就引出了命名空间的存在!
命名空间的出现
为了解决上述问题,命名空间就问世了,它解决了一些变量名与库中的关键字重名的情况!
下面就来讲解有关命名空间的注意事项!
1.命名空间的初始化与定义!
如何定义一个新的命名空间呢?其格式很简单,就是一个namespace +自己定义的空间名!+一个大括号!
例如:
这时一个新的命名空间就创造出来了!那么问题来了,命名空间创建出来之后,那么命名空间内的元素可以是什么类型呢?
命名空间变量的定义类型!
对于命名空间的变量类型来说:其可以包括普通的内置类型,函数,结构体!
例如:
当然,命名空间内部也可以嵌套其他命名空间!
例如:
命名空间内的变量引用!
当一个新的命名空间创造出来以后,如何引用其中的元素呢?这也是命名空间中非常重要的一个要点!其引用方式就是空间名字加上两个冒号再加上你需要引用的变量!(Huoj "::"rand)!
例如:
注:编译器默认引用的是库函数中的变量!所以当引用rand变量时,编译器默认引用的值时stdlib函数中rand的值!
命名空间权限的展开!
注:当对命名空间的权限打开时,编译器因为不知道该使用哪一个rand变量,所以编译器会给出报错提示!
例如:
命名空间的其他相关事项
1.当在一个工程中,有若干个相同的命名空间名字时,编译器最后会整合命名空间变量名字,并且不会给出报错!
2.一个命名空间就定义了一个新的作用域,命名空间中的所有内容都局限于该命名空间中!
至此,本文对命名空间的相关操作讲解完成,若有问题,欢迎大家积极在评论区提出,共同进步!