如何将可选参数传递给C++中的方法? 任何代码段...如何将可选参数传递给C++中的方法?
回答
这里是传递模式可选参数的例子
void myfunc(int blah, int mode = 0)
{
if(mode == 0)
do_something();
else
do_something_else();
}
可以以两种方式与这两个呼叫MYFUNC有效
myfunc(10); //mode will be set to default 0
myfunc(10, 1);//mode will be set to 1
你能提供一些与字符串有关的例子吗? – 2010-09-24 04:20:14
void myfunc(int blah,char mode [] = NULL) – 2010-09-24 04:28:27
NULL表示NULL指针,尽管它将被定义为文字'0'。它不是常数零的通用名称。对于整数(非指针),你应该使用数字:'int mode = 0'。 – UncleBens 2010-09-24 04:53:27
用逗号分隔它们,就像参数没有默认值。
int func(int x = 0, int y = 0);
func(); // doesn't pass optional parameters, defaults are used, x = 0 and y = 0
func(1, 2); // provides optional parameters, x = 1 and y = 2
通常通过参数设置默认值:
int func(int a, int b = -1) {
std::cout << "a = " << a;
if (b != -1)
std::cout << ", b = " << b;
std::cout << "\n";
}
int main() {
func(1, 2); // prints "a=1, b=2\n"
func(3); // prints "a=3\n"
return 0;
}
个使用默认参数
template <typename T>
void func(T a, T b = T()) {
std::cout << a << b;
}
int main()
{
func(1,4); // a = 1, b = 4
func(1); // a = 1, b = 0
std::string x = "Hello";
std::string y = "World";
func(x,y); // a = "Hello", b ="World"
func(x); // a = "Hello", b = ""
}
注:以下是非法的构造
template <typename T>
void func(T a = T(), T b)
template <typename T>
void func(T a, T b = a)
一个重要的原则相对于默认参数的用法:
默认参数应在最右边的末尾指出,一旦你指定默认值参数,则不能再次指定非默认参数。 例如:
int DoSomething(int x, int y = 10, int z) -----------> Not Allowed
int DoSomething(int x, int z, int y = 10) -----------> Allowed
这可能是有趣的,一些你在多个默认参数的情况:
void printValues(int x=10, int y=20, int z=30)
{
std::cout << "Values: " << x << " " << y << " " << z << '\n';
}
考虑下面的函数调用:
printValues(1, 2, 3);
printValues(1, 2);
printValues(1);
printValues();
以下输出制作:
Values: 1 2 3
Values: 1 2 30
Values: 1 20 30
Values: 10 20 30
参考:http://www.learncpp.com/cpp-tutorial/77-default-parameters/
这就是我一直在寻找的。使用一个可以处理不同数量参数的函数。在头文件中用默认值声明函数,然后在没有默认参数的情况下定义它,然后你就可以使用它。无需使功能过载 – 2016-10-27 01:57:29
- 1. 将空参数传递给C#方法
- 2. 将可变参数传递给方法
- 3. 将C#中的数组参数传递给C++/CLI方法
- 4. 将可空参数传递给Web方法C#
- 5. 将参数传递给方法的CakePHP
- 6. 将函数作为参数传递给C++中的方法
- 7. 如何将可变参数传递给另一个方法?
- 8. 如何将可选的宏参数传递给函数
- 9. 如何将可选的闭包参数传递给函数?
- 10. 将参数传递给tearDown方法
- 11. 将AngularJS参数传递给ActionResult方法
- 12. 将参数传递给a4j:ajax方法
- 13. Automapper:将参数传递给Map方法
- 14. 将参数传递给FB Api()方法
- 15. 将主要参数传递给方法
- 16. 将其他参数传递给方法
- 17. 将参数传递给link_to方法
- 18. 将参数传递给Map方法2012
- 19. 将参数传递给Raphael customAttributes方法
- 20. 将参数传递给strftime方法
- 21. 将参数传递给@selector方法
- 22. 将参数传递给SOAP方法
- 23. 将参数传递给POST方法
- 24. 如何将参数传递给Thread中的ThreadStart方法?
- 25. 如何将参数传递给Rails中的委托方法
- 26. 如何将参数传递给Groovy中的ant.java()方法
- 27. 将C#枚举传递给C++ CLI的包装方法参数
- 28. 如何将参数传递给类方法并将值返回给主方法?
- 29. 将方法中的参数传递给Click事件方法#
- 30. 如何将数组传递给方法?
可能重复的[函数参数的默认值](http://stackoverflow.com/questions/2842928/default-value-of-function-parameter) – 2010-09-24 04:44:47
您不传递选项参数。你传递可选参数! – Chubsdad 2010-09-24 04:57:54
对于比保留哨兵值更加明确的控制,请查看boost :: optional <>。 – 2010-09-24 06:54:28