读书人

默认参数的有关问题

发布时间: 2012-03-03 15:33:02 作者: rapoo

默认参数的问题

看了两本书在这个地方都K了:
钱能C++ P96 (3)
按他说的 默认参数应从右到左逐渐定义

void func(int a,int b=2,int c=3,int d=4);
那么 调用的方法规定为:
-------这个不太理解------------
调用:
func(2,15,, ,20); //Error 只能从右到左顺序匹配默认

那位能从调用函数 的STACK(函数调用机制)的角度解译一下吗?

同样的是 C++primer 3 潘的
P239
他说的是调用的实参按位置解析,缺省参数只能有来替换函数缺少的尾部实参、、
这个乍样理解呢??????

例书:
char *screenInit(int height=24,int width=80,char background='');

调用:
char *screenInit( , , ‘?’);
请那位帮忙解译啊



[解决办法]
调用函数的时候不能写出这种( , , ‘?’)参数表形式,这是错的;

对于这个函数char *screenInit(int height=24,int width=80,char background= ' ');

想对它进行调用并且使用它的缺省值,只能是使用它从右向左的缺省值,如:

screenInit(25)将调用的是height=25,而后两个分别为width=80,background= ' '
[解决办法]
呵呵,才有时间来看回贴不好意思.
不能func(2,15, , ,20)这样,如果想用缺省值就一定要从右开始向左用,中间空,或者从左向右用缺省值都是错 的
[解决办法]
从右到左啊
左边如果有空的,右边就得都为空
而左边如果有提供实参,则右边就随你了
[解决办法]
要从左到右对齐

读书人网 >C++

热点推荐