当前位置:编程学习 > C/C++ >>

C++中默认参数是什么?谁给我讲讲

追问:void func(int a,int b=2,int c=3,int d=4) //ok

func(2,15, ,20); //error:只能从右向左顺序匹配默认值

不可以缺省吗?之前的c不是有了个默认的参数值为3了吗?

答案:1、默认参数的目的

默认参数也称缺省参数,C++可以给函数定义默认参数。

通常,调用函数时,要为函数的每个参数给定对应的实参,但有时需要用相同的实参反复调用该函数,这时,C++可以给该参数定义默认值,默认参数在函数声明中提供。如声明函数

void delay(int loops=1000);

这样,无论何时调用delay()函数,都不用给loops赋值,程序会自动将它当作1000进行处理;当然也可以对其进行赋值。若对其赋值,则按所赋的实参进行运算;若没有赋值,则按指定的默认值进行运算。

例如:

delay(2500); // loops设置为2500

delay(); //OK:loops采用默认值1000

允许函数默认参数值,是为了让编程更简单。

当一个函数有多个默认参数时,在主函数调用该函数时,会出现实参个数小于函数真实参数个数(形参个数)的现象,实际上缺少的参数在该函数声明时已经提供了默认值,实参中不赋值等于采用了默认值。(我们在程序中调用MFC内置函数时会经常遇见这种情况!)

2、默认参数的声明

默认参数在函数声明中提供

当函数又有声明又有定义时,定义中不允许提供默认参数;当函数只有定义时,默认参数才可以出现在函数定义中。

3、默认参数的顺序规定

如果一个函数中有多个默认参数,则形参分布中,默认参数应该从右至左逐渐定义。

也就是说,默认参数只能集中放在函数参数的最后面,这是为了保证函数调用时参数传递的正确性。

例如:

void func(int a=1,int b,int c=3,int d=4) //error

void func(int a,int b=2,int c=3,int d=4) //ok

而在调用该函数时,系统会向左匹配参数。

例如,对第二个函数声明,其正确的调用方法为:

func(10,15,20,30); //OK:调用时给出所有实参

func(); //error:参数a没有默认值

func(12,12); //OK:参数c和d采用默认值

func(2,15, ,20); //error:只能从右向左顺序匹配默认值

上一个:在c++利用栈进行表达试的计算
下一个:求一个c++源程序!(30语句左右)

CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,