c++ - 在函数 C++ 中间使用默认值
问题描述
假设这段代码:
#include<stdio.h>
int t(int a, int b=6, int c=7){
return b;
}
int main(){
return 0;
}
如何调用t
并仅传递a and c
值并将b
其作为默认值?
解决方案
没有办法做到这一点。参数只能按顺序传递,因此不能将默认参数用于显式传递的另一个参数之前的参数。
但是,您可以使用聚合类作为参数,它与默认成员初始化器和指定初始化器 (C++20) 相结合是命名参数传递的一个不错的模拟:
struct Args {
int a;
int b = 6
int c = 7;
};
int t(const Args& args);
int main()
{
t({
.a = 42,
// b will be 6
.c = 1337,
});
}
使用指定的初始化程序不是强制性的,因此不需要 C++20。它只是更简洁和可读。
t
根据程序的结构,成为类的成员函数可能是有意义的。
推荐阅读
- python - 使用 requests.post() 从网页中抓取文本
- ruby-on-rails - 参数丢失或值为空:但参数 IS 有一个值
- c# - 如何统一执行精益/峰值系统?
- swift - 仅当图像视图和文本字段都不为零时,如何启用按钮?
- amazon-web-services - AWS-Cognito:如何在用户池中分配用户角色?
- python-3.x - 使轴上的长标签可见
- entity-framework - 无法为数组中的空值创建条件?
- excel - 单元格值不会更新
- javascript - 如何在 android webview 中使用 html5 地理位置修复“位置不可用”错误?
- elixir - 如何将 test.watch 与 `iex -S mix phx.server` 集成