有没有办法只使用函数的一些可选参数?所以如果我有这样的功能,
void f(int a = 0, int b = 1) {}
Run Code Online (Sandbox Code Playgroud)
我可以调用f()并只指定b并保留a其默认值吗?
我希望。C++ 缺少其他语言(如 C# 或 Python)中常见的这一特性。
现在,您要么非常聪明地设计参数的顺序,要么将参数重构为一个小结构:
struct f_args
{
int a = 0;
int b = 1;
};
Run Code Online (Sandbox Code Playgroud)
现在您可以随意设置您想要的任何内容:
void f(f_args args){/*...*/};
// ...
f_args args;
args.b = 2;
f(args);
Run Code Online (Sandbox Code Playgroud)
或者使用指定的初始值设定项(C++20):
f({.b=2});
Run Code Online (Sandbox Code Playgroud)
Boost 参数库尝试以更健壮的方式解决这个问题。