命名空间
namespace的价值
namespace的定义
命名空间的使用
缺省参数
全缺省参数
半缺省参数
函数重载
一、命名空间
1.namespace的价值
变量和函数和类的名称存在于全局作用域中,会导致许多冲突。使用命名空间的目的是对初始化的名称进行本地化,避免命名冲突。
因为c++中这个rand是函数所以不能被赋值,为了解决这个问题,c++推出了命名空间这个概念

2.namespace的定义
定义命名空间,需要使用namespace这个关键字,后面跟空间名字,而后使用{},在括号中可以有函数,变量和类名。

namespace的本质是定义一个域,这个域跟全局域各自独立,不同的域可以定义同名的变量。
下图为命名空间内变量与全局变量同时存在。

由下图可知定义不同的命名可以存在相同的变量及函数和类,是不会报错的

3.命名空间的使用
由下图可知需要通过::符号叫域作用符,前面是命名空间,后面为需要查找的值。

二、缺省参数
1.声明或定义函数时为函数的参数制定一个缺省值。在调用该函数时,如果没有指定实参则采用该形参的缺省值,否则使用指定的实参,缺省值分为全缺省与半缺省。
全缺省参数
所有参数都有默认值。由下图可知,如果没有对其进行传的参数,默认调用了其本来的参数。以调用过来的参数为首选,没调过来的用其默认生成的。

半缺省参数部分参数给缺省值
由下图可知,当改为半缺省时我们需要对其没给的参数进行传参,否则就会报错。无法调用该函数。

由下图可知,缺省值时不能跳跃给默认值的

缺省值必须从左到右的顺序

三、函数重载
c++中支持在同一作用域中出现同名函数,但是要求这些同名函数的形参不同,可以是参数个数不同或者类型不同。这样构成函数重载
参数类型不同

参数个数不同

参数类型顺序不同

返回值不同:单单一个返回值不同是不能构成重载的

构成重载却产生歧义。
当我们调用f1不传参时,编译器也不知道该调用哪个函数,所以产生歧义

26万+

被折叠的 条评论
为什么被折叠?



