void execute(int &x,int y=100)
{
x=x+y;
cout<<x<<endl;
}
void main()
{
int a=5,b=6;
execute(b);
}尽管没有给x赋值(函数原型中的形参),下面的程序仍然可以工作。
发布于 2010-04-20 12:44:40
是的,它会工作的。通过不将默认值分配给x,可以强制调用者将一个值作为参数进行传递。当您在main中执行execute(b)时,您将引用x与实际参数'b‘绑定在一起,并且由于您没有将任何值传递给变量'y’,因此将使用默认值。
发布于 2010-04-20 12:54:49
首先,在C++中没有“函数原型”这样的东西。"Prototype“是一个来自C语言的术语,在C++中没有什么有意义的应用。这里有一个函数声明,它恰好也是一个函数定义。
其次,您似乎在问是否需要为C++中的所有函数参数指定默认参数,对吗?如果是这样,答案是否定的,没有必要为所有函数参数指定默认参数。
第三,应该是int main,而不是void main。
发布于 2010-04-20 12:55:07
您运行execute(b),这意味着execute将运行b = b + 100 (y是100,因为您没有传入它,并且它获得了默认值),打印出106,b将在main中修改回来,因为它是通过引用获取的。
https://stackoverflow.com/questions/2672589
复制相似问题