C++ 定义默认参数时方向从右向左,这句话无法理解。

定义参数不就在各个参数后面加=……还需要从右向左对应吗?不明白,请举个例子... 定义参数不就在各个参数后面加 =……
还需要从右向左对应吗?
不明白,请举个例子
展开
 我来答
动漫总旋风
推荐于2018-05-07 · TA获得超过784个赞
知道小有建树答主
回答量:207
采纳率:0%
帮助的人:154万
展开全部
eg
void m(int a,char v,float f=0.0);
void m(int a=0,int v,int f);
假如你要调用第二个方法,请问你怎么调用呢?
如果你想这样m(2,3);
那2编译器只能认为是int a的,3只能认为是int v的,而且这样也不对啊,那int f呢?
所以只有像第一种方法那样,可选参数放在后面,从右往左排列编译器才会识别!
上海莘默
2024-04-12 广告
**ODU重载连接器**ODU重载连接器是一种高性能、高密度的连接解决方案,广泛应用于各种工业自动化和通信设备中。它采用先进的设计理念和制造技术,具有优异的电气性能和机械强度,能够满足复杂环境下对数据传输和信号稳定的高要求。同时,ODU重载... 点击进入详情页
本回答由上海莘默提供
百度网友7867dff4f
2015-12-01 · TA获得超过4520个赞
知道大有可为答主
回答量:2271
采纳率:77%
帮助的人:2152万
展开全部
指C++中带默认值的参数必须全部排在()最右侧, 中间不能夹着不带默认参数的参数. 如果允许默认参数写在一般参数的左侧的话, 调用时就会变成这样: func(, , 1, 3, 4, 5)使用默认参数时只能直接空掉几个参数不填, 然而C++并不允许这种写法, 于是只能把默认参数全部定义在最右侧然后连同逗号一起省略
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
bati8888
2009-09-07 · TA获得超过3716个赞
知道大有可为答主
回答量:4669
采纳率:0%
帮助的人:2105万
展开全部
这句话有问题。 省略参数后面(右面)的参数不许省略,不然乱套了。定义时默认参数后面不能有必须参数了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
tsingjun
2009-09-07 · 超过35用户采纳过TA的回答
知道答主
回答量:119
采纳率:0%
帮助的人:120万
展开全部
默认参数的意思是,如果在使用该函数时,可以不传递该默认参数,因此,必须把默认参数放在右边,否则,系统怎么知道你要省略的是哪个参数撒?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
我是白痴17
2016-05-16
知道答主
回答量:27
采纳率:0%
帮助的人:19.5万
展开全部
假设一个函数头是void show(int a,int b,int c)
1、因为传参时,是按形参列表从左向右赋值的(即先赋给a,再赋给b,最后赋给c)。故如果设默认值的话,应该从最右端开始,才能保证传进来的值能正确对应地赋给所想的参数,也不会覆盖掉预先设好的默认值
2、上例中,如果要定义默认参数,则首先应该定义c的默认参数值,只有在c的默认值定义好的情况下才能继续定义b为默认参数。满足从右向左顺序。例如,void show(int a,int b =1,int c=2)
3、如果不按顺序来,比如定义成了void show(int a,int b=1,int c),首先,vs2010会报错。不过,先假设比较早的版本不报错。
若想让b使用默认值,则在调用函数时无法成功
1)比如,写成show(2,,3),这样写是错误的
2)比如,写成show(2,3),系统肯定会认为这是给a、b传的值。而c没被传值,又没有默认值,因此还是错的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式