C++默认参数的问题~

“默认实参必须是函数参数表中最右边(尾部)的参数调用具有两个或多个默认实参数的函数时,如果省略的不是参数表中最右边的参数,则该参数右边的所有参数也应省略默认实参应在函数名... “默认实参必须是函数参数表中最右边(尾部)的参数
调用具有两个或多个默认实参数的函数时,如果省略的不是参数表中最右边的参数,则该参数右边的所有参数也应省略
默认实参应在函数名第一次出现时指定,通常是在函数原型中”
这段话我不太明白。默认实参为什么是最右边的数这个是啥意思啊
以及后面的我也不太清楚。。。
展开
 我来答
i金你奶奶家
推荐于2017-09-29 · TA获得超过163个赞
知道答主
回答量:128
采纳率:0%
帮助的人:71.9万
展开全部
比如说下面的函数
int fun(int a,int b,int c=3)
{

}
c就是指定的默认实参,通常在函数原型中指定。这里给了3作为默认参数。用平常的时候调用这个函数fun(4,5,6);那么就是a=4,b=4,c=6。如果这样调用fun(1,2)那么就是a=1,b=2,c=3,这里c没有指定,因为c是默认实参,已经有了默认值,这里c就是采用默认值3。
为什么默认实参必须是函数参数表中最右边的参数。把上面的函数改下
int fun(int a=3,int b,int c)
{}
这样调用fun(1,2),这样就是a=1,b=2,而c根本就没有赋到值,就出错了。这些参数都是一一对应的。
memberwin
2011-06-30 · TA获得超过3903个赞
知道大有可为答主
回答量:1000
采纳率:100%
帮助的人:492万
展开全部
比如一个函数声明void f(type p1, type p2, type p3, type p4)
如果要使用默认参数可以声明成void f(type p1, type p2, type p3, type p4=default)
或者void f(type p1, type p2, type p3=default, type p4=default)
以及void f(type p1, type p2=default, type p3=default, type p4=default)
和void f(type p1=default, type p2=default, type p3=default, type p4=default)
但不能声明成void f(type p1, type p2, type p3=default, type p4)
原因在于:默认参数是可以省略的,所以如果你传入三个参数,编译器不知道这到底是省略了一个参数,还是某种错误,所以要求所有默认参数必须都要靠右,且在第一个默认参数之后如果还有参数,必须都是默认参数。
在调用时一旦一个默认参数被省略,则其之后的所有参数都必须省略,否则会造成编译系统的混乱,从而造成错误的调用
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
全康裕6R
2011-06-30
知道答主
回答量:12
采纳率:0%
帮助的人:4万
展开全部
定义函数 void f(int q, int w, int e=0);
e=0 就是默认实参,调用函数时f(1,2),这时e=0
后面的是说不能写成这样 void f( int q, in w=0, int e);
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式