缺省参数,我们先看一下什么是缺省参数
首先,这个是我们的需要传参的函数,这里我们传入 1 然后就输出 a
下面我们就看一下缺省参数
我们现在看main函数里面调用fun函数,这里会输出多少呢?
OK 这里我们分别输出了0 和 1
这里的fun函数我们给了一个缺省值 0 ,所以我们调用这个函数的时候,如果我们给它传了值,这里输出的值就是我们传入的值,如果我们没有传入值的话,就是默认的缺省值
我们在继续看一个
那么这里我们会输出多少呢?
OK 这里很显然是三个0,因为这里我们一个值都没有传
那 如果是这样呢?
我们传入了一个值
这样会输出多少呢?
这里我们看到输出了1 0 0 ,我们可以看到骂我们传入的那个值传给了a
那么这样传参我们当然也可以想到输出的是多少了
那么我们在变一下
我们看下面
我们看到,这里的三个参数我们都给了默认的缺省值,这样的我们叫做全缺省,如果我们只给一部分,那么就叫做半缺省,记住半缺省并不是缺省一半,而是缺省一部分
所以这样的我们就叫做半缺省,如果是这样的话,我们应该如何传参呢?
这里记住,我们如果是半缺省的话,一定要从右往左缺省
下面我们看一下,我们如何传参
这里 ,我们有两个缺省值,所以我们只需要传一个参数,这样我们输出的话,输出的是多少呢?
这里我们输出的是 1 0 0, 我们还是把1 传给了a变量,所以这里我们传参的话是从左往右传,缺省的话,是从右向左缺省
下面我们看一下函数重载
在C++中,函数名是可以相同的,而C语言中是不可以的,而在C++中,在同一命名空间下,函数名相同,参数不同(类型不同,顺序不同,参数个数不同)就构成函数重载。
下面就介绍一下函数重载
我们看到,我们分别调用了Add函数,一个传了整型,另外一个传入浮点型,我们这里会输出多少呢?
我们看到,我们调用了名字相同的函数,得到的参数却不同,这既是函数重载,因为我们传入的参数不同,所哟调用到了不同的函数
那么我们的函数重载如果是这样子还构成函数重载吗?
我们其中一个 int 和 int 类型的, 另外一个是int 和double 类型的,这样我们的函数还可以构成重载吗?
我们看到还是可以构成重载的,因为这里是函数类型不同
那么我们这样还构成重载吗?
我们还是可以看到,是构成重载的,应为这里是函数的参数顺序不同
那么如果我们的返回值相同还可以构成重载吗?
我们看到时构成重载的,因为函数重载和返回值没有关系
我们在看一个
如果时这样我们还构成函数重载吗?
我们可以想一下判断函数是否构成重载的条件(在相同作用域内 函数名相同 函数的参数不同(参数个数不同 参数类型不同 参数顺不同)),我们可以就按到这两个函数构成函数重载
那么如果我们调用这两个函数会右什么问题吗?
当我们传入 1 的时候我们调用了传入int 的函数
那么如果我们调的时候空参数的呢??
这时候我们看到就出现问题了,为社么呢?
因为,如果我们不传入值的话,我们这个函数时调用哪一个呢?时调用空的呢?还是调用缺省的呢?
所以这时候就出现了二意性
下面我们在看一下引用(&)
在C++中什么时引用呢?
我们下面看
在看引用之前我们先看一下指针,这里我们会输出多少呢?
这里我们都输出了 10 ,那么我们来看一下引用
我们这样就是引用,使用了‘&’符号
那么我们这样会输出多少呢?
还都是 10 ,这里引用和指针的区别时什么呢?
如果我们向修改 a 的值我们用引用和指针分别怎么操作呢? 我们继续看一下
这里我们来看一下
这里我们都对a 进行了修改,我们看到如果我们向修改 a 的话,我们可以直接对引用进行修改,而我们想要用指针修改的话,我们时需要先解引用,在修改的,所以我们就可以把 b 直接理解为是 a而引用也就是“取别名”。
那么他们还有什么区别呢?
这里的 b = x 是对b这个引用进行赋值还是,修改引用指向呢?
这里我们可以看到,我们把 x 给了b,如果这里是改变引用的指向的话,&b就和&x是相同的,否则就是和&a相同
我们看到它是和&a相同的 所以这里就是把x的值给给b,所以这里我们也可以确认,引用时不可以改变指向的
这就是今天要讲的内容