默认参数的顺序规定的问题
默认参数的顺序规定如果一个函数有多个默认参数,则形参分布中,默认参数应从右至左逐渐定义.当调用函数是时,只能向左匹配参数.例如:voidfunc(inta,intb=2,...
默认参数的顺序规定
如果一个函数有多个默认参数,则形参分布中,
默认参数应从右至左逐渐定义.当调用函数是时,只能向左匹配参数.例如:
void func(int a, int b=2,int c=3,int d=4);
对于第2个函数声明,其调用的方法规定为:
(1) func(10,15,20,30); / :调用时给实参
(2) func(); //error:参数a没有默认值
(3) func(12,12); //OK:参数c和d默认
(4) func(2,15,20); //error:只能从右到左顺序匹配默认
)
3对了4为什么不对
这样太讲不通了吧?
1楼你的程序能编译 并没有象书上说的会出错
怎么回事 展开
如果一个函数有多个默认参数,则形参分布中,
默认参数应从右至左逐渐定义.当调用函数是时,只能向左匹配参数.例如:
void func(int a, int b=2,int c=3,int d=4);
对于第2个函数声明,其调用的方法规定为:
(1) func(10,15,20,30); / :调用时给实参
(2) func(); //error:参数a没有默认值
(3) func(12,12); //OK:参数c和d默认
(4) func(2,15,20); //error:只能从右到左顺序匹配默认
)
3对了4为什么不对
这样太讲不通了吧?
1楼你的程序能编译 并没有象书上说的会出错
怎么回事 展开
3个回答
展开全部
是C++?
是的话 运行这个自己看看就知道了
#include "iostream.h"
void func(int a, int b=2,int c=3,int d=4)
{
int r=b+c+d; //结果
cout<<r<<"\n";
cout<<a<<" "<<b<<" "<<c<<" "<<d<<"\n";//分别输出
}
void main()
{
func(10,15,20,30); //结果应该是65 10 15 20 30
func(12,12); //结果应该是19 12 12 3 4
func(2,15,20); //结果应该是39 2 15 20 4
}
所以 在定义的时候 形参的默认值是从右到左匹配
但是在实参和形参匹配的时候是从左到右
你也可以把这代码改成用函数声明的
是的话 运行这个自己看看就知道了
#include "iostream.h"
void func(int a, int b=2,int c=3,int d=4)
{
int r=b+c+d; //结果
cout<<r<<"\n";
cout<<a<<" "<<b<<" "<<c<<" "<<d<<"\n";//分别输出
}
void main()
{
func(10,15,20,30); //结果应该是65 10 15 20 30
func(12,12); //结果应该是19 12 12 3 4
func(2,15,20); //结果应该是39 2 15 20 4
}
所以 在定义的时候 形参的默认值是从右到左匹配
但是在实参和形参匹配的时候是从左到右
你也可以把这代码改成用函数声明的
中智咨询
2024-08-28 广告
2024-08-28 广告
在当今竞争激烈的商业环境中,企业需要不断提高自身的竞争力,以保持市场份额和增加利润。通过人效提升,企业可以更有效地利用有限的资源,提高生产力和效益,从而实现盈利目标。中智咨询提供全方位的组织人效评价与诊断、人效提升方案等数据和管理咨询服务。...
点击进入详情页
本回答由中智咨询提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询