功能概念

时间:2010-04-20 04:41:40

标签: c++

void execute(int &x,int y=100)
{
 x=x+y;
 cout<<x<<endl;
}
void main()
{
 int a=5,b=6;
 execute(b);
}

尽管没有为x赋值(函数原型中的形式参数),但以下程序仍然有效。

4 个答案:

答案 0 :(得分:4)

是的,它会起作用。如果不将默认值分配给x,则强制调用者将值作为参数传递。在main中执行execute(b)时,您将引用x与实际参数'b'绑定,并且由于您没有将任何值传递给变量'y',因此将使用默认值。

答案 1 :(得分:3)

首先,C ++中没有“函数原型”这样的东西。 “Prototype”是一个来自C语言的术语,它在C ++中没有任何有意义的应用。你在这里有一个函数声明,它也恰好是一个函数定义。

其次,您似乎在询问是否需要为C ++中的所有函数参数指定默认参数,对吧?如果是这样,答案是否定的,没有要求为所有函数参数指定默认参数。

第三,它应该是int main,而不是void main

答案 2 :(得分:1)

您运行execute(b),意味着execute将运行b = b + 100y为100,因为您没有将其传入,并且它获得了默认值),打印106和b将在main中修改回来,因为它是通过引用拍摄的。

答案 3 :(得分:0)

我认为你对功能如何运作感到困惑。你将x的值传递给它(好吧,对int的引用而不是实际值)所以......是的,这是有效的。

通过为y(int y=100)提供默认值,您可以调用该函数,而无需将第二个参数传递给它。如果使用单个参数调用,则y将被赋值为100。

int a=5,b=6;
execute(b);

一旦进入execute(),x的初始值为6,y为100。