所以,我有这样的代码,例如:
void doSomething(int aValue, int aValue2) { /*thigs to do...*/ } int main() { doSomething(9); }
注意,我只对aValue使用了9,并且aValue2为空。我想要的是用某个默认值自动填充缺失的aValue2。有什么办法可以做到吗?
aValue
aValue2
lp0sw83n1#
您需要的是default argument,如果没有函数的前向声明,则在函数声明或定义中将值赋给参数。在下面的示例中,aValue2的默认参数设置为100。
void doSomething(int aValue, int aValue2 = 100) { /*thigs to do...*/ } int main() { doSomething(9); }
smtd7mpg2#
至少有两种方法,第一种方法是用default-argument声明函数,如下所示:
void doSomething(int aValue, int aValue2 = 123);
...那么当它只被一个参数调用时,编译器会把调用当作第二个参数是123。注意,默认值出现在函数被 * 声明 * 的地方,而不是被 * 定义 * 的地方,所以如果你有一个单独的.h文件包含函数的声明,= 123将转到那里而不在.cpp文件中。另一种方法是重载函数,如下所示:
123
.h
= 123
.cpp
void doSomething(int aValue, int aValue2) { /*things to do...*/ } void doSomething(int aValue) { doSomething(aValue, 123); }
这有点罗嗦,但它为您提供了更大的灵活性,可以在调用者只提供一个参数时决定如何调用函数的第一个(两个参数)版本。
2条答案
按热度按时间lp0sw83n1#
您需要的是default argument,如果没有函数的前向声明,则在函数声明或定义中将值赋给参数。在下面的示例中,
aValue2
的默认参数设置为100。smtd7mpg2#
至少有两种方法,第一种方法是用default-argument声明函数,如下所示:
...那么当它只被一个参数调用时,编译器会把调用当作第二个参数是
123
。注意,默认值出现在函数被 * 声明 * 的地方,而不是被 * 定义 * 的地方,所以如果你有一个单独的.h
文件包含函数的声明,= 123
将转到那里而不在.cpp
文件中。另一种方法是重载函数,如下所示:
这有点罗嗦,但它为您提供了更大的灵活性,可以在调用者只提供一个参数时决定如何调用函数的第一个(两个参数)版本。