缺省参数的由来
我们可以通过点外卖来举一个例子
就好比在点外卖的时候,经常会询问客户是否需要餐具,如果我们无视这个选项,商家会默认为“是”。而在收货地址和电话里,我们无法无视这些选项,如果无视,平台会强制无法进行订单。
而这也就是缺省参数的一个应用场景。
我们在使用C语言时,我们所有函数都需要传入参数才可以使函数正常调用,而往往很多场景下我们并不知道是否需要传入参数,此时,我们可以使用缺省参数,在需要的时候我们传入参数,在不需要的时候我们不传入参数,此时函数会将传入值赋值为一个默认值。
缺省参数的使用
缺省参数
在C语言中,我们函数定义的时候需要传入多少个参数,我们就必须传入多少个参数,否则函数无法正常进行调用
而在C++中,我们可以将函数中的变量默认定义,这样我们即使不传入参数,我们也可以使函数正常调用
而如果我们传入了参数,函数则会使用我们传入的参数
缺省参数的分类
1.全缺省参数
如果一个函数,其所有参数全部缺省,我们就称其为全缺省参数
而我们传入参数时,同样也可以只传入部分参数
编译器会调用传入的参数,而未传入的参数则会使用默认参数
注意:不能隔位传入参数!!!
例如:我们如果只想传入j和k的值,而只让i使用默认值,我们的想法便很清晰:
但是很遗憾,这在编译器中是不允许的
我们在传入参数时,必须按顺序依次传入参数,所以尽量把经常使用默认值的参数放在后面
2.半缺省参数
我们使用缺省参数时,往往不需要将所有值都赋值为默认值,有时也不能赋值为默认值(例如引例中的地址电话等),此时我们便可以使用半缺省参数
i不是缺省参数,i必须要传入一个参数,否则编译器会报错
而我们可以只传入i的参数,程序可以正常运行
注意:必须将缺省参数放在后面
和全缺省参数一样,我们不能隔位传入参数,所以我们必须将缺省参数放在后面
缺省参数的注意
缺省参数不能在函数声明和定义中同时出现
例如我们在头文件a.h中声明了一个函数
在源文件中定义了该函数
此时编译器无法判断使用哪一个缺省值,则程序无法正常进行
而就算我们同时将a默认赋值为相同的值,同样编译无法正常进行
所以正确的做法是,我们只需要在函数声明中进行缺省即可