默认参数的问题
看了两本书在这个地方都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)这样,如果想用缺省值就一定要从右开始向左用,中间空,或者从左向右用缺省值都是错 的
[解决办法]
从右到左啊
左边如果有空的,右边就得都为空
而左边如果有提供实参,则右边就随你了
[解决办法]
要从左到右对齐