我如何设置一个缺省值为一个丢失的参数内空语句C++

wqsoz72f  于 2022-12-30  发布在  其他
关注(0)|答案(2)|浏览(113)

所以,我有这样的代码,例如:

void doSomething(int aValue, int aValue2) {
    /*thigs to do...*/
}
int main() {
    doSomething(9);
}

注意,我只对aValue使用了9,并且aValue2为空。
我想要的是用某个默认值自动填充缺失的aValue2
有什么办法可以做到吗?

lp0sw83n

lp0sw83n1#

您需要的是default argument,如果没有函数的前向声明,则在函数声明或定义中将值赋给参数。在下面的示例中,aValue2的默认参数设置为100。

void doSomething(int aValue, int aValue2 = 100) {
    /*thigs to do...*/
}
int main() {
    doSomething(9);
}
smtd7mpg

smtd7mpg2#

至少有两种方法,第一种方法是用default-argument声明函数,如下所示:

void doSomething(int aValue, int aValue2 = 123);

...那么当它只被一个参数调用时,编译器会把调用当作第二个参数是123。注意,默认值出现在函数被 * 声明 * 的地方,而不是被 * 定义 * 的地方,所以如果你有一个单独的.h文件包含函数的声明,= 123将转到那里而不在.cpp文件中。
另一种方法是重载函数,如下所示:

void doSomething(int aValue, int aValue2) {
     /*things to do...*/
 }

 void doSomething(int aValue) { 
     doSomething(aValue, 123);
 }

这有点罗嗦,但它为您提供了更大的灵活性,可以在调用者只提供一个参数时决定如何调用函数的第一个(两个参数)版本。

相关问题