提问人:ProMike 提问时间:9/29/2023 最后编辑:Jan SchultkeProMike 更新时间:9/29/2023 访问量:132
现代 C++ 中有命名参数吗?[复制]
Is there named parameters in modern C++? [duplicate]
问:
在 C# 和 Python 等一些语言中,有一个“命名参数”的概念。在一本关于 C# 的书中,我找到了代码:
static void print_nums(int x = 0, int y = 0, int z = 0)
{
Console.WriteLine(x, y, z);
}
然后可以像这样调用函数
print_nums(y: 3);
C++ 中有类似的东西吗?我见过一些这样的问题,但它们大约有 7-8 年的历史,所以也许在较新版本的 C++ 中添加了语法?我还看到这种类型的功能可以手动实现,但我的问题是关于标准的。
答:
2赞
Ted Lyngmo
9/29/2023
#1
算是吧。从 C++20 开始,您可以使用指定的初始值设定项来达到类似的效果:
struct params {
int x;
int y;
int z;
};
void func(params p) {
}
int main() {
func({.y = 3}); // p.x and p.z will be 0, p.y = 3
func({.x = 3, .y = 10, .z = 2}); // here all are initialized to resp. Value
}
请注意,您需要按照指定成员在 中出现的顺序命名它们。params
评论