c++ 高手请给我讲解一下这段话怎么理解

函数参数的缺省在C++中,函数的参数可以有缺省值。当调用有缺省参数的函数时,如果相应的参数没有给出实参,则自动用相应的缺省参数值作为其实参。函数的缺省参数,是在函数原型中... 函数参数的缺省
在C++中,函数的参数可以有缺省值。当调用有缺省参数的函数时,如果相应的参数没有给出实参,则自动用相应的缺省参数值作为其实参。函数的缺省参数,是在函数原型中给定的。例如:
int sum(int i=-1, int j=-2);

(能不能写个程序来说明一下什么情况下:"函数的参数可以有缺省值。当调用有缺省参数的函数时,如果相应的参数没有给出实参,则自动用相应的缺省参数值作为其实参。")
展开
 我来答
飘渺世间天
2007-03-03 · TA获得超过2650个赞
知道大有可为答主
回答量:843
采纳率:0%
帮助的人:1109万
展开全部
比如你写一个计算x的y次方的函数,在不指定第二个参数的时候它默认设置为2:

#include <iostream>
using namespace std;

double power(int x, int y = 2) // 默认返回x的平方
{
if(y > 0)
return y > 0 ? x * power(x, y-1) : 1;
else
return 1/(y < 0 ? x * power(x, (-y)-1) : 1);
}

int main()
{
cout << power(2) << endl; // 2的2次幂 4
cout << power(2,3) << endl; // 2的3次幂 8
cout << power(-2,-3) << endl; // 2的-3次幂 -0.125
}

当指定了第二个参数的时候返回的就是x的y次方,否则返回x的2次方。

另外提醒一句如果函数的参数中有默认参数和非默认参数共同存在的话,默认参数一般要写在非默认参数之后。比如上面的例子中如果把power写成:
double power(int y = 2, int x)的话,那么每次调用power时就都必须显式地指定其第一个参数了,这样就失去了设置默认参数的意义。

再有就是当参数列表中有默认参数的函数在重载为参数个数比该重载函数的参数个数小的时候会产生二义性,如:

#include <iostream>
using namespace std;

void power(int x, int y = 2)
{
// some implementation
}

void power(int x) // 重载power
{
// some implementation
}

int main()
{
power(2); // ambiguous call to overloaded function
// 所以在这时就必须指定第二个参数来加以区别:
power(2, 2);
}
义溪蓝F3
2007-03-02
知道答主
回答量:16
采纳率:0%
帮助的人:0
展开全部
你在函数原型中定义了了两个参数,但是你在函数调用的时候只传递了一个参数,另一个就时以缺省的形式存在的,比如你定义i=1,j=2,在函数调用的时候,你传递一个sun(3)这个时候i=3,j=2。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
xptlbx
2007-03-02 · TA获得超过1677个赞
知道小有建树答主
回答量:607
采纳率:0%
帮助的人:0
展开全部
void
myputs(char *s = "bad")
{
puts(s);
}

如果你调用myputs("good")则打印good,
如果你调用myputs()则打印bad。

讲清楚了吗?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式