现代C++中有命名参数吗? [重复]

问题描述 投票:0回答:1

在 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++ 中添加了语法?我也看到这种类型的功能可以手动实现,但我的问题是关于标准的。

c++ named-parameters
1个回答
2
投票

有点。从 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
中出现的顺序命名指定成员。

© www.soinside.com 2019 - 2024. All rights reserved.