C++相较于c语言的优点有哪些,为什么C++之父要创造C++?我想其中一个因素就是因为出现重名这种情况吧,你或许会疑惑重名是怎么出现的,只要控制取不同名字就行。这种想法在我们刚开始时学语言时经常会出现。但是,在公司工作时,重名却是很常见的事情,一个项目或者工程是通过多人合作的完成,因为多多少少会出现用同样名字的事情,而且,对于几千几万行代码而言,就算是我们自己完成,也难免会出现命名重复的问题。所以命名空间就出现了。
这是出现命名空间重复后的提醒,在同一个作用域里面只能出现一个相同名字的变量,而且遵守先在作用域找,找不到再到全局找的原则
我们可以用命名空间解决重名这个问题,你可以把命名空间想象成除局部域和全局域以外的另一块作用域,因此我们可以在这个域上重新命名。
1.namespace的使用
namespace 加名字(你可以随便命名),在作用域({花括号里面})你可以加数据类型,函数,甚至是另一个namespace(嵌套)或者宏
我们可以通过以下三种方法去使用这个num里面的a
2.第一种:using namespace num;
注意:必须先定义完在使用,不然会报错。
对于自己创造的命名空间不推荐这个形式,因为这种把里面所有的名字全部展开,如果在另一个命名空间(非嵌套)也使用过这个名字同时也展开也会造成命名冲突。
这种方式的访问顺序在局部域和全局域之后,如果我没有注释,那先局部a==1,局部注释掉a==0,局全注释掉a==2。
3.第二种 直接在变量名里面加命名空间的名字::
如num::a
这种你就没必要去在意访问顺序了,已经规定必须在这里面找。
现在是我简单cv一下的,但是在实际工作中,如果你每次写都要加num::是不是太麻烦了,所以我个人推荐第三种。
4.第三种: using 命名空间名加::要用的变量名。
例子:using num::a;
你想使用一个名字的时候就只展开使用一个,不会突然出现多个名字,可控性高。
、
注意:这种也需要考虑到访问顺序。
5.嵌套namespace使用里面的里面那个命名空间的方法
多加一层::就行了,方法跟前面三种一样。
6.缺省函数
我们学过了c语言,知道了函数定义有参数的必须传递参数才能使用。
这是c语言的局限性,但是c++解决了这个问题;
对于你没有传参的函数,你可以给定一个缺省值(默认值)完成这个函数。
(1)全缺省的使用方法。
你可以从左到右去传入参数,但是不能从右往左传入参数。
(2)半缺省的使用方法
半缺省的定义为存在一个参数没有缺省值就是半缺省
因为前面全缺省红字的解释,我们知道参数必须从左往右传,因此在出现定义中左边那个是有缺省值,右边那个没有的情况,计算机不能很好的处理,它不知道把10这个值放在哪里,而导致了后续步骤不能运行,20就不能传入参数中
谢谢未来的佬,现在的佬的阅读。