永发信息网

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

答案:6  悬赏:20  手机版
解决时间 2021-12-24 05:42
  • 提问者网友:浮克旳回音
  • 2021-12-23 20:19
定义参数不就在各个参数后面加 =……
还需要从右向左对应吗?

不明白,请举个例子
最佳答案
  • 五星知识达人网友:七十二街
  • 2021-12-23 20:29
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呢?
所以只有像第一种方法那样,可选参数放在后面,从右往左排列编译器才会识别!
全部回答
  • 1楼网友:野味小生
  • 2021-12-24 00:00
题意有点问题吧
  • 2楼网友:老鼠爱大米
  • 2021-12-23 23:51
默认参数的意思是,如果在使用该函数时,可以不传递该默认参数,因此,必须把默认参数放在右边,否则,系统怎么知道你要省略的是哪个参数撒?
  • 3楼网友:孤老序
  • 2021-12-23 23:09
这句话有问题。 省略参数后面(右面)的参数不许省略,不然乱套了。定义时默认参数后面不能有必须参数了。
  • 4楼网友:千夜
  • 2021-12-23 22:50
你好! 指C++中带默认值的参数必须全部排在()最右侧, 中间不能夹着不带默认参数的参数. 如果允许默认参数写在一般参数的左侧的话, 调用时就会变成这样: func(, , 1, 3, 4, 5)使用默认参数时只能直接空掉几个参数不填, 然而C++并不允许这种写法, 于是只能把默认参数全部定义在最右侧然后连同逗号一起省略 打字不易,采纳哦!
  • 5楼网友:冷風如刀
  • 2021-12-23 21:54
假设一个函数头是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没被传值,又没有默认值,因此还是错的
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯