C++ 默认参数

C++ 默认参数

在函数中,参数被定义为函数调用时传递的值。传递的值是来源,接收函数是目的地。

现在让我们详细了解默认参数的概念。

C++ 默认参数

定义

默认参数是在函数声明中自动分配给编译器的值,如果调用函数没有传递任何值给该参数。

定义默认参数的特点

以下是声明默认参数的规则 –

  • 默认参数传递的值不是常量。如果将值传递给函数,则可以覆盖这些值。如果没有传递值,则保留先前声明的值。
  • 在调用函数时,值从左到右复制。
  • 所有给出默认值的值都在右侧。

示例

  • void function(int x, int y, int z = 0) 解释 – 上述函数是有效的。这里z是作为默认参数的预定义值。
  • Void function(int x, int z = 0, int y) 解释 – 上述函数是无效的。这里z是在中间定义的值,不能被接受。

代码

#include
using namespace std;
int sum(int x, int y, int z=0, int w=0) // Here there are two values in the default arguments 
{ // Both z and w are initialised to zero 
    return (x + y + z + w); // return sum of all parameter values
}
int main()
{
    cout << sum(10, 15) << endl; // x = 10, y = 15, z = 0, w = 0
    cout << sum(10, 15, 25) << endl; // x = 10, y = 15, z = 25, w = 0
    cout << sum(10, 15, 25, 30) << endl; // x = 10, y = 15, z = 25, w = 30
    return 0;
}

输出

25
50
80    

解释

在上面的程序中,我们调用了sum函数三次。

  • Sum(10,15) 当调用这个函数时,它进入sum的定义。在定义中,它将x初始化为10,y初始化为15,其他的值默认为0,因为没有传递任何值。所有在sum之后的值都输出为25。
  • Sum(10, 15, 25) 当调用这个函数时,x仍然是10,y仍然是15,传入的第三个参数z被初始化为25,而不是0,最后一个值保持为0。x、y、z、w的和为50,作为输出返回。
  • Sum(10, 15, 25, 30) 在这个函数调用中,有四个参数值传递给函数,x为10,y为15,z为25,w为30。所有的值相加得到80作为输出。

注意:如果函数被不同的数据类型重载,并且这些重载也包含了默认参数,可能会导致歧义的匹配,这会导致错误。

示例

#include
using namespace std;
int sum(int x, int y, int z=0, int w=0) // Here there are two values in the default arguments 
{ // Both z and w are initialised to zero 
    return (x + y + z + w); // return sum of all parameter values
}
int sum(int x, int y, float z=0, float w=0) // Here sum is overloaded with two float parameter values 
{ // This results in ambiguity 
    return (x + y + z + w);
}
int main()
{
    cout << sum(10, 15) << endl; // x = 10, y = 15, z = 0, w = 0
    cout << sum(10, 15, 25) << endl; // x = 10, y = 15, z = 25, w = 0
    cout << sum(10, 15, 25, 30) << endl; // x = 10, y = 15, z = 25, w = 30
    return 0;
}

输出

prog.cpp: In function 'int main()':
prog.cpp:15:20: error: call of overloaded 'sum(int, int)' is ambiguous
  cout << sum(10, 15) << endl; // x = 10, y = 15, z = 0, w = 0
                    ^
prog.cpp:4:5: note: candidate: int sum(int, int, int, int)
 int sum(int x, int y, int z=0, int w=0) // Here there are two values in the default arguments 
     ^
prog.cpp:9:5: note: candidate: int sum(int, int, float, float)
 int sum(int x, int y, float z=0, float w=0) // Here sum is overloaded with two float parameter values    

解释

在这里,当我们使用全部参数 (x, y, z, w) 或者只使用其中一个参数值 z 或 w 来调用 sum 函数时,编译器会对要执行的函数产生困惑。因此,它会产生一种歧义,导致错误发生。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程