【发布时间】:2018-05-15 19:38:16
【问题描述】:
假设我有:
void f(bool option1 = false, bool option2 =false, bool option3 = false)
{
...
}
我想打电话:
f(option2=true);
这在 C++ 中可行吗?
【问题讨论】:
-
如果您来自 Python 背景,那么您的期望是错误的。 C++ 基于 C,这是不可能的。
-
不,您只能通过明确指定两个参数来进行调用。不过,您真的需要第一个参数作为默认值吗?也许是为了重构,但似乎想得太远了。
-
简短回答:否
-
你可以考虑Named Parameter Idiom。
-
我并不反对,你可以在这里看到许多聪明的 C++ 主义的例子,它们让你得到你想要的东西,但是以 C++ 的方式。我从不争辩 C++ 是完美的,它有很多 的怪癖和问题,他们仍在努力解决,但我要说的是,如果没有好的参考,C++ 不是你可以完全吸收的东西.这远非直观,无辜的错误会导致各种非常糟糕的未定义行为。知道你在处理什么,做好准备。只是在这里寻找你。
标签: c++