如果一个函数中有多个默认参数,则默认参数必须全部处在形参表的

如果一个函数中有多个默认参数,则默认参数必须全部处在形参表的,第1张

答案:后面

解释:编译器是按顺序来传参数的。详解如下:

1 例如void fun(int a, int b, int c=0);那么编译器就按照a,b,c的顺序给函数fun传参数,fun函数里c是默认参数,就是说,调用fun函数时,可以不必传3个参数,可以写成fun(1,2),这样的话,a=1,b=2,c=0

2 如果默认参数不是在后面部分,而是在前面的话,编译器就会报错,譬如:void f(int a, int b=0, int c);这样的话,默认参数是没有任何意义的,因为你写f(1,2)的时候,编译器是把1赋值给a,2赋值给b,结果c没有赋值,故出错。

总结:为了避免出现上述的第2种情况,编译器只要检查到默认参数后面,还有非默认参数,就会报错。所以说,一个函数如果有默认参数,那么默认参数一定都放在参数列表中的后面部分,否则,编译器报错。

display的参数x是char型的,也就是一个字节的参数,另外,main函数中,x没有定义,也会报错。display没有调用过,会报警告。

#include<iostream>

#include<fstream>

using namespace std;

class Point{

private:

int x;

public:

Point(int x,int y,int z=0)

int main()

{

Point po(1,2);

poprint();

return 0;

}

扩展资料:

假设有一个名为left()的函数,它将字符串和n作为参数,并返回该字符串的前n个字符。更准确地说,该函数返回一个指针,该指针指向由原始字符串中被选中的部分组成的字符串。

例如,函数调用left("theory",3)将创建新字符串"the",并返回一个指向该字符串的指针。现在假设第二个参数的默认值被设置为1,则函数调用left("theory",3)仍像前面讲诉的那样工作,3将覆盖默认值。

-默认参数

display的参数x是char型的,也就是一个字节的参数,不可能传递字符串,定义成char 即可。另外,main函数中,x没有定义,也会报错。display没有调用过,会报警告。

#include<iostream>

void display(char a[])

{

if(!a)

cout<<a;

else

cout<<"hello";

}

扩展资料:

注意:

(1)默认参数只可在函数声明中设定一次。只有在无函数声明时,才可以在函数定义中设定。

(2)默认参数定义的顺序为自右到左。即如果一个参数设定了缺省值时,其右边的参数都要有缺省值。

如:int mal(int a, int b=3, int c=6, int d=8) 正确,按从右到左顺序设定默认值。

int mal(int a=6, int b=3, int c=5, int d) 错误,未按照从右到左设定默认值。c设定缺省值了,而其右边的d没有缺省值。

-默认参数

1php有个很方便的用法是在定义函数时可以直接给参数设默认值,如:

function simue ($a=1,$b=2){

return $a+$b;

}

echo simue(); //输出3

echo simue(10); //输出12

echo simue(10,20); //输出30

但js却不能这么定义,如果写function simue(a=1,b=2){}会提示缺少对象。

2js函数中有个储存参数的数组arguments ,所有函数获得的参数会被编译器挨个保存到这个数组中。于是我们的js版支持参数默认值的函数可以通过另外一种变通的方法实现,修改上例:

function simue (){

var a = arguments[0] arguments[0] :

1;

var b = arguments[1] arguments[1] :

2;

return a+b;

}

alert( simue() ); //输出3

alert( simue(10) ); //输出12

alert( simue(10,20) ); //输出30

1、给形参设置默认的初始值,有初始值的参数要靠后,避免被冲掉

2、和解构赋值结合

思考:

函数参数为undefined时,触发参数默认值

function testFn(a=1,b=2,c=3){

consolelog(a,b,c,a+b+c)

}

testFn(2,'',4) //2 "" 4 "24"

testFn(2,null,4) //2 null 4 6

testFn(2,undefined,4) //2 2 4 8

一般只在函数声明中写默认参数,因为有的编译器在函数定义中写默认参数会编译不通过,为了通用就只在函数声明中写默认参数,函数定义中不写。

定义中不写默认参数的话,,是有些小麻烦,但可以记忆一下哪个参数有默认参数(从右往左数就行),,或按F12在定义和声明间转换(不同IDE可能快捷键可能会有区别)

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/12188881.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-21
下一篇2023-05-21

发表评论

登录后才能评论

评论列表(0条)

    保存