void execute(int &x,int y=100)
{
x=x+y;
cout<<x<<endl;
}
void main()
{
int a=5,b=6;
execute(b);
}
尽管没有为x赋值(函数原型中的形式参数),但以下程序仍然有效。
答案 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 + 100
(y
为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。