C ++中的默认参数
默认参数是在函数定义中传递的参数,如果没有提供参数,则在函数调用时,编译器将使用该参数。
下面是默认参数的示例:
#include <bits/stdc++.h>using namespace std;
void print(int a, int b = 1, int c = 2, int d = 3)
{
cout << "//a: " << a << endl;
cout << "//b:" << b << endl;
cout << "//c:" << c << endl;
cout << "//d:" << d << endl;
}
int main(){
int a = 12, b = 13, c = 14, d = 15;
//第一个函数调用
cout << "only argument a passed\n";
print(a);
//第二个函数调用
cout << "only arguments a,b passed\n";
print(a, b);
//第三函数调用
cout << "only arguments a,b,c passed\n";
print(a, b, c);
//第四函数调用
cout << "All arguments a,b,c,d passed\n";
print(a, b, c, d);
return 0;
}
输出:
only argument a passed//a: 12
//b: 1
//c: 2
//d: 3
only arguments a,b passed
//a: 12
//b: 13
//c: 2
//d: 3
only arguments a,b,c passed
//a: 12
//b: 13
//c: 14
//d: 3
All arguments a,b,c,d passed
//a: 12
//b: 13
//c: 14
//d: 15
在上面的示例中,我们使用了默认参数concept。这是运算符重载的一个实例,其中解析是在编译时完成的。
因此,在第一个函数调用的情况下,我们仅在调用函数中传递了一个参数a,而其他参数b,c,d为其默认值。
在第二个函数调用的情况下,我们仅在调用函数中传递了两个参数a,b,而其他参数c,d则采用了其默认值。
在第三个函数调用的情况下,我们在调用函数中传递了三个参数a,b,c,而另一个参数d为其默认值。
在第四个函数调用的情况下,我们在调用函数中传递了所有四个参数,因此不采用默认参数值。
但是在定义默认参数的情况下,我们需要遵循一些规则,以便编译器不会发现函数重载是模棱两可的。
1)在函数定义中,如果我们声明一个变量的默认参数,则此后的所有变量都需要具有默认参数。
如下所示,它不是使用默认参数的有效函数定义,并且会引发编译错误,
int func(int a, int b=0, int c)//这将引发错误,因为b已分配默认参数
//值,但c尚未出现,尽管c在b之后。
//应该这样声明:
int func(int a, int c ,int b=0)
2)如果在调用函数时提供了参数值,则将复制参数的默认值
3)不应导致歧义,否则会导致编译错误。
以上是 C ++中的默认参数 的全部内容, 来源链接: utcz.com/z/316002.html