
答案:后面
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可能快捷键可能会有区别)
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)